我写了一个共享 libA.so 。我的程序 P 将动态加载 libA.so (使用dlopen,dlsym ...)。
这是我的问题:
在 libA.so 中,我必须在静态 libB.a 中使用函数(例如 fun1()),但< em> libB.a 不是用-fPIC
编译的,我无法重新编译 libB.a ,所以我无法链接 libB.a 进入 libA.so 。
我已经尝试将 libB.a 链接到 P (带-Wl, - 整个归档),以便让动态加载器链接 fun1(加载时,进入 libA.so 。但是,这不起作用。而且我很确定 fun1()位于 P 中(我用nm P | grep "fun1"
检查了它。)
我该怎么办?
提前致谢!
答案 0 :(得分:3)
如果您想将libB.a
链接到P
,以便在libA.so
加载P
时P
可以使用这些函数,则需要编译{{1}使用-rdynamic
选项。