Если вы хотите узнать, где данный GCC найдет libc.a или libc.so, сделайте следующее:
gcc --print-file-name=libc.a
gcc --print-file-name=libc.so
Причина, по которой -lc
переводится в libc.so.6
, несколько сложна: для glibc libc.so
- это скрипт компоновщика, который обычно содержит:
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.2 ) )
или что-то подобное.