Попробуйте использовать команду ldd
, чтобы увидеть, что она связывает без опции -static
.Вот что я получаю за глупую программу, которая у меня есть.
~$ gcc so.o -lm -o so
~$ ldd so
linux-gate.so.1 => (0x00db7000)
libm.so.6 => /lib/libm.so.6 (0x00c7f000)
libc.so.6 => /lib/libc.so.6 (0x0037f000)
/lib/ld-linux.so.2 (0x002da000)
~$ gcc so.o -static -lm -o so
~$ ldd so
not a dynamic executable
Так что без статики я автоматически получаю разделяемую версию libc, что удивило меня, хотя и не должно было.Я полагаю, у вас есть общая версия, но не статическая, так что вам нужно откуда-нибудь получить статическую библиотеку, если вы решили, что 1986 год для вас: -).
Чтобы вы моглисделайте: gcc -print-search-dirs
и поищите их и убедитесь, что libc.a не найден.