Acabo de probar las últimas versiones de llvm y clang trunk. Compilaron sin una sola advertencia, pero estoy teniendo problemas para vincular un ejemplo de Hello World. Mi código esproblema de vinculador de clang
#include <stdio.h>
int main(){
printf("hello\n");
}
Si puedo compilar usando
clang test.c
me sale el siguiente error
/usr/bin/ld: crt1.o: No such file: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Usando -v muestra que la GNU ld es invocada como
"/usr/bin/ld" --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o a.out crt1.o crti.o crtbegin.o -L -L/../../.. /tmp/cc-0XJTsG.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed crtend.o crtn.o
¡Pero tengo el archivo de objeto crt1.o!
$ locate crt1.o
/usr/lib/Mcrt1.o
/usr/lib/Scrt1.o
/usr/lib/crt1.o
/usr/lib/gcrt1.o
Lo que también funciona es
clang -c test.c
gcc test.o
y por supuesto
gcc test.c
Lo que más intentado:
$ clang -Xlinker "-L /usr/lib" test.c
/usr/bin/ld: crt1.o: No such file: No such file or directory
clang: error: linker command failed with exit code 1 (use -v to see invocation)
$ clang -Xlinker "-L /usr/lib" test.c -v
"/usr/bin/ld" --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o a.out crt1.o crti.o crtbegin.o -L -L/../../.. -L /usr/lib /tmp/cc-YsI9ES.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed crtend.o
También intenté copiar el archivo en crt1.o el directorio actual. Eso pareció funcionar. Bueno, no compiló porque después de eso crti.o faltaba.
Mi distribución es Ubuntu.
Bueno, realmente no sé qué probar a continuación. No veo cómo podría solucionar el clang ni tengo una idea sobre cómo inyectar el camino necesario en la invocación de ld. ¿Algunas ideas?
que sólo tienen una breve descripción de -Xlinker en la página de mi sonido metálico, pero no se supone que es -Xlinker pasado dos veces por opciones con argumentos? Esto es lo que las páginas man de gcc dicen para -Xlinker. – anddam