小编Ben*_*n04的帖子

clang链接器问题

我刚尝试了最新的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)

c linker clang

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

clang ×1

linker ×1