GCC总是试图使用静态libc库而不是共享库

时间:2016-08-15 11:11:27

标签: unix gcc linker centos

我不确定我的服务器出了什么问题,它正在运行CentOS 7,我最近尝试构建一个库并得到错误:

/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie
collect2: error: ld returned 1 exit status

首先,我认为这是库源代码中的错误,但经过一些测试后我创建了一个最小的工作C ++程序:

#include <iostream>
int main() {
   std::cout<<"works!";
}

我尝试静态地构建它......

gcc -static main.c

作品。生成a.out,这就是我所期望的,现在如果我输入...

gcc main.c

我得到与上面相同的错误,它试图链接libc.a但我没有指定静态链接。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题:

yum install glibc-devel.i686 glibc-i686