我刚尝试了最新的llvm和clang trunk版本.他们在没有开箱即用的情况下编译,但是我在连接一个hello world示例时遇到了麻烦.我的代码是
#include <stdio.h>
int main(){
printf("hello\n");
}
Run Code Online (Sandbox Code Playgroud)
如果我编译使用
clang test.c
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
/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)
Run Code Online (Sandbox Code Playgroud)
使用-v显示gnu ld被调用为
"/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
Run Code Online (Sandbox Code Playgroud)
但是我有crt1.o目标文件!
$ locate crt1.o
/usr/lib/Mcrt1.o
/usr/lib/Scrt1.o
/usr/lib/crt1.o
/usr/lib/gcrt1.o
Run Code Online (Sandbox Code Playgroud)
什么也有效
clang -c test.c
gcc test.o
Run Code Online (Sandbox Code Playgroud)
而且当然
gcc …Run Code Online (Sandbox Code Playgroud)