【问题标题】:link function in .a into .so将 .a 中的函数链接到 .so
【发布时间】: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

标签: c linux gcc linker ld


【解决方案1】:

如果你想将libB.a链接到P,以便libA.so在被P加载时可以使用这些函数,你需要编译P并带有-rdynamic选项。

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2011-12-17
    • 2015-06-10
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多