Как определить, какие параметры командной строки 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]