gpt4 book ai didi

linux - 如何将 libc.a 链接到共享库

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:49 25 4
gpt4 key购买 nike

我有一个名为 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 即可。

关于linux - 如何将 libc.a 链接到共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com