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] ?

questionAnswers(1)

yourAnswerToTheQuestion