Je tentais sur mon 64 bits ubuntu:gcc relier manuellement échoué: ne peut pas trouver des symboles de ma bibliothèque d'exécution
D'abord, j'ai un programme simple
$ cat test.c
int f(int x){
int i=(x/42);
return i;
}
int main(){
return 0;
}
Puis-je spécifier manuellement comment il est lié:
$ gcc test.c -nostdlib /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o
J'ai eu quelques erreurs:
/usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’中:
(.text+0x12):unresolved reference to ‘__libc_csu_fini’
/usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’:
(.text+0x19): unresolved reference to ‘__libc_csu_init’
/usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’:
(.text+0x25): unresolved reference to ‘__libc_start_main’
collect2: error: ld returned 1 exit status
J'essayais de voir comment gcc gère tous les fichiers objets nécessaires et essaie de le faire manuellement. Comment le réparer? Merci.