gcc
- это просто внешний интерфейс, который запускает as
(и ld
, если вы не используете -c
, чтобы останавливаться на объектных файлах без ссылок). Используйте gcc -v
, чтобы увидеть, что он запускает и какие параметры командной строки он передает.
Если вы хотите связать с библиотеками, обычно используйте gcc
. Он знает правильные параметры командной строки для передачи в ld
для установки путей к библиотекам и порядок их размещения в командной строке ld
.
Вы можете найти gcc -nostdlib
или -nostartfiles
полезными, например, если вы хотите написать свои _start
, но по-прежнему ссылаться на библиотеки. Также -no-pie
и / или -static
в зависимости от того, как вы хотите связать.
Если вам интересно узнать больше о цепочке инструментов и связывании, то поиграйтесь с опциями ld
и посмотрите, что ломается, когда вы меняете опции. И / или используйте readelf -a
для проверки получившегося исполняемого файла.