首先说一下解决方法:编译时添加-no-pie选项即可 问题原因:简单来说就是GCC当前会默认生成PIE(Position Independent Execuable) 代码,无法与非PIE的库(许多静态库)进行链接。 PIE原理可以参看这个blog:关于Linux下gcc 编译 C 源文件时,生成的是Shared object file而不是Executable file...
PIC/no-PIC 与静态/动态链接的可执行文件没有很强的关系。理论上我们可以以任何方式将 PIC/非 PIC 与静态/动态链接的可执行文件结合起来。我注意到 gcc 手册中有一些有趣的选项,例如“-static”、“--static-pie”、“-fno-pic”、“-fpic”。我猜可能是: “-static”将生成无图片可执行文件。 “--stat...