【发布时间】:2019-07-28 21:26:00
【问题描述】:
我的应用程序需要在运行时加载一种或多种算法,为此我使用 .so。问题是这些库没有被任何其他进程使用,但我的应用程序没有必要与其他人共享 .text 部分。 .so 的某些部分来自我预先编译的其他静态库。
在这种情况下,我还需要对静态文件使用 -fpic 标志吗?
编辑
我发现这篇文章article。在第 7 页,它指出“因此,如果性能对库或动态可加载模块很重要,您可以将其编译为非 PIC 代码。将模块编译为非 PIC 的主要缺点是加载时间增加,因为动态链接器在绑定符号时必须打大量的代码补丁。”
【问题讨论】:
标签: c gcc compiler-optimization fpic