Jak ustalić, które opcje wiersza poleceń domyślnie są przekazywane przez gcc do ld?
Rozważmy program hello world C:
cześć, c:
#include "stdio.h"
int main()
{
printf("Hello, World!\n");
}
Jeśli zadzwonię:
$ gcc -c hello.c -o hello.o
Spowoduje to utworzenie pliku relokowalnego ELFcześć
Jeśli wtedy zadzwonię:
$ gcc hello.o -o hello [1]
Połączy hello.o z ld i wygeneruje plik wykonywalny ELFdzień dobry
Jeśli jednak zadzwonię bezpośrednio na ld[2]
zamiast[1]
:
$ ld hello.o -o hello [2]
Dostaję te błędy:
/usr/bin/ld.bfd.real: warning: cannot find entry symbol _start
test.c:(.text+0xa): undefined reference to `puts'
gcc musi przekazywać inne opcje do ld (na przykład, aby połączyć bibliotekę C).
Czy mimo to należy dokładnie określić, przez co gcc wiersza poleceń przechodzi do polecenia ld[1]
?