【发布时间】:2011-04-07 02:40:38
【问题描述】:
我写了一个共享的libA.so。我的程序 P 将动态加载 libA.so(使用 dlopen、dlsym...)。
这是我的问题:
在libA.so中,我必须在静态libB.a中使用函数(比如fun1()),但是libB.a没有用-fPIC编译,无法重新编译libB.a,所以无法链接libB.a进入 libA.so.
我已经尝试将 libB.a 链接到 P(使用 -Wl,--whole-archive),以便让动态加载程序链接 fun1( ) 加载到 libA.so 中。但是,这是行不通的。而且我很确定 fun1() 在 P 中(我检查过:nm P | grep "fun1")。
我该怎么办?
提前致谢!
【问题讨论】:
-
错误信息:
P: symbol lookup error: ./mylib/libA.so: undefined symbol: fun1和 nm 输出:nm P | grep "fun1" 0000000000510f76 T fun1