我编写了一个共享的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,--whole-archive),以便让动态加载器链接fun1( ) 加载时将其放入 libA.so 中。然而,这是行不通的。我很确定 fun1() 位于 P 中(我用以下命令检查过:nm P | grep "fun1"
)。
我该怎么办?
提前致谢!
最佳答案
如果您想将libB.a
链接到P
,以便在libA.so
加载时可以使用这些函数P
,需要使用-rdynamic
选项编译P
。
关于c - 将.a中的函数链接到.so中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575340/