gpt4 book ai didi

我可以让 gcc 在链接共享库时忽略静态库吗?

转载 作者:太空狗 更新时间:2023-10-29 15:08:31 27 4
gpt4 key购买 nike

我遇到过一些使用共享库或动态加载模块构建项目的案例,其中模块/库依赖于另一个库,但在尝试链接之前不检查共享副本是否可用。这会导致来自静态存档(.a 文件)的对象文件被拉入生成的 .so,并且由于这些对象文件是非 PIC,生成的 >.so 文件要么有 TEXTREL(加载性能和内存使用情况非常糟糕),要么完全失败(在不支持非 PIC 共享库的 x86_64 等架构上)。

有什么方法可以让 gcc 编译器驱动程序拒绝将静态库代码链接到共享库输出中?由于可能需要从 libgcc.a 等链接最少的数量,这似乎很困难和复杂......

最佳答案

如您所知,您可以使用 -static 来仅链接静态库,但似乎没有一个很好的等同于仅链接动态库的方法。

下面的回答可能有用...

How to link using GCC without -l nor hardcoding path for a library that does not follow the libNAME.so naming convention?

您可以使用 -l:[libraryname].so 在您的库搜索路径中列出您想要链接的动态库。指定 .so 结尾可能会帮助您处理仅动态库的情况。您可能必须使用“lib”前缀指定完整名称,而不仅仅是缩写版本。

关于我可以让 gcc 在链接共享库时忽略静态库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514945/

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