Недавно я изучал компоновщик и пытался связать простые файлы с помощью ld, но потом мне не удалось это сделать (вероятно, из-за архитектуры x64? ... Я не могу точно сказать). Вот файлы, которые я использовал:
#include<stdio.h>
int fun(int x);
int main(){
int i = fun(10);
printf("%d\n",i);
return 0;
}
и:
int fun(int x){
return x+10;
}
Я скомпилировал их с помощью команд g cc - c, а затем связал их в один файл с помощью команды :
ld -r -o a.o main.o fun.o
и, наконец, я хотел превратить файл ao в исполняемый файл. Я прочитал /usr/lib/ctr0.o необходимо, но не найдя его, я попытался /x86_64-linux-gnu/crt1.o (и узнал, что это не работает). Чем тогда заменить crt0.o? У меня нет crt0.o в моей системе (я выполнил поиск, но, вероятно, не там, где должен был). Какой другой файл я могу использовать вместо него, чтобы команда:
ld a.o <SOME_FILE> -lc
собирала выводимый исполняемый файл?