【问题标题】:GCC is always trying to use the static libc library instead of sharedGCC 总是尝试使用静态 libc 库而不是共享库
【发布时间】:2016-08-17 21:38:21
【问题描述】:

我不确定我的服务器出了什么问题,它运行的是 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 但我没有指定静态链接。

【问题讨论】:

    标签: unix gcc linker centos


    【解决方案1】:

    我设法解决了:

    yum install glibc-devel.i686 glibc-i686

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2023-04-04
      • 1970-01-01
      • 2011-08-02
      • 2011-05-24
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多