gpt4 book ai didi

c - 使用或不使用-fpic

转载 作者:行者123 更新时间:2023-12-05 01:33:13 26 4
gpt4 key购买 nike

我的应用程序需要在运行时加载一个或多个算法,为此我使用 .so。问题是这些库除了我的应用程序之外没有被任何其他进程使用,所以不需要与其他人共享 .text 部分。 .so 的某些部分来 self 预先编译的其他静态库。

在这种情况下,我是否仍必须为静态文件使用 -fpic 标志?

编辑

我找到了这篇文章 article .在第 7 页,它指出“因此,如果性能对于库或动态可加载模块很重要,则可以将其编译为非 PIC 代码。将模块编译为非 PIC 的主要缺点是加载时间会增加,因为动态链接器在绑定(bind)符号时必须打大量的代码补丁。”

最佳答案

是的,你知道。将使用 dlopen 加载的任何内容都必须使用 -fpic(或 -fPIC)进行编译。

这不是关于共享文本段,而是关于访问全局数据的不同规则(包括您可能没有意识到的东西全局数据,例如使用的“过程链接表”蹦床在主可执行文件和共享库中调用全局函数)。

关于c - 使用或不使用-fpic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57245089/

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