c - 将.a中的函数链接到.so中

标签 c linux gcc linker ld

我编写了一个共享的libA.so。我的程序P将动态加载libA.so(使用dlopen、dlsym...)。

这是我的问题:

libA.so中,我必须在静态libB.a中使用函数(例如fun1()),但是< em>libB.a 不是用 -fPIC 编译的,我无法重新编译 libB.a,因此无法链接 libB .alibA.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/

相关文章:

c - 混合 C 和汇编及其对寄存器的影响

linux - 脚本找不到文件

Linux 脚本 while 循环 "-a"

c++ - 使用 c++0x 初始化列表时出现段错误

我们可以为 gcc 上的特定功能添加 `-fcall-used-REG` 吗?

c - IEEE 754 表示

c - 如何在DPDK中生成增量数据值

python - 如何使用python在linux中创建用户

linux - 适用于 Linux 的可移植 gcc

c++ - ASIC 设备的 OpenCL(或其他)编程?