Я не уверен, что пошло не так на моем сервере, он работает CentOS 7, и я недавно пытался построить библиотеку и получил ошибку:GCC всегда пытается использовать статическую библиотеку LibC вместо общего
/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, но я не указать статические ссылки.