从Makefile将变量导入C程序

sud*_*03r 2 c makefile

我需要在现有的长C源代码中进行一些更改.有一个顶级Makefile,它定义了各种编译器选项,如链接器使用的库的目录位置.

就像是 :

LD_OPTIONS = $(PATH_TO_MYLIB1) $(PATH_TO_MYLIB2)
Run Code Online (Sandbox Code Playgroud)

现在,我正在考虑使用dlsym()dlopen()使用这些库而不是显式链接它们.为此,我需要库路径.

dlopen( path_to_lib , RTLD_NOW) ;
Run Code Online (Sandbox Code Playgroud)

如何使用PATH_TO_LIBMakefile中的变量并在我的程序中使用它?我想过用" echosystem()" 这样的东西.但是,我希望有更好的解决方案.:-)

qrd*_*rdl 9

在你的makefile中你可以写

CFLAGS += -DPATH_TO_LIB="somepath/somelib"
Run Code Online (Sandbox Code Playgroud)

所以PATH_TO_LIB成为你可以在你的源中使用的预处理器宏

dlopen(PATH_TO_LIB, RTLD_NOW);
Run Code Online (Sandbox Code Playgroud)