我需要在现有的长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中的变量并在我的程序中使用它?我想过用" echo和system()" 这样的东西.但是,我希望有更好的解决方案.:-)
在你的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)