我有一个名为 nvdebug.so 的共享库,它是编译的结果。
我想要将 .so 文件与 libc.a 链接
虽然我搜索了几乎所有的google网站,但我找不到解决方案。
我认为“--whole-archive”命令是解决问题的最合适方法。
如果运行良好,nvdebug.so 文件大小必须增加,但运行不佳。
gcc -shared -Wl,-soname,nvdebug.so -o nvdebug.so -Wl,--whole-archive -L/usr/lib -lc -Wl,--no-whole-archive
我不知道我应该修改什么,--whole-archive 机制和 -shared 命令。
如果你们能帮助我做什么,我真的很感激
不能将静态库链接到共享库,因为共享库必须包含位置无关代码,而静态库包含位置相关代码(称为“可重定位代码”)。您最多会得到一个链接器错误。所以,这是不可能的,唯一的选择就是放弃并尝试其他方法。
注意
实际上可以使用与位置无关的代码编译静态库,这将允许您执行此操作,但这意味着重新编译 libc.a
我假设这是一个非选项。我认为,只需在编译 libc 时将 -fPIC
添加到 CFLAGS
即可。
我是一名优秀的程序员,十分优秀!