Как определить, какие параметры командной строки gcc передает в ld по умолчанию?

Рассмотрим программу hello world C:

Привет:

#include "stdio.h"

int main()
{
        printf("Hello, World!\n");
}

Если я позвоню:

$ gcc -c hello.c -o hello.o

Это создаст перемещаемый файл ELFhello.o

Если я тогда позвоню:

$ gcc hello.o -o hello            [1]

Он свяжет hello.o с ld и создаст исполняемый файл ELFПривет

Однако, если я позвоню ЛД напрямую[2] вместо :[1]

$ ld hello.o -o hello             [2]

Я получаю эти ошибки:

/usr/bin/ld.bfd.real: warning: cannot find entry symbol _start
test.c:(.text+0xa): undefined reference to `puts'

gcc должен передавать другие параметры в ld (например, чтобы связать библиотеку C).

Есть ли способ точно определить, через что командная строка gcc проходит через ld в команде?[1]

Ответы на вопрос(1)

Ваш ответ на вопрос