Clang / llvm:交叉编译时找不到crt1.o crti.o

时间:2014-02-12 12:27:03

标签: clang cross-compiling linaro

我正在尝试使用clang / llvm在ARM上交叉编译示例hello world程序。

我在链接方面遇到了一些问题。

clang -target arm-none-linux-gnueabi hello.c

它显示一些错误“ 没有这样的文件或目录”stdio.h

所以为了避免错误我给出了以下命令。

clang -target arm-none-linux-gnueabi -sysroot = / path / toolchain / hello.c -I / path / toolchain / sysroot / usr / include /

然后我成功结束了错误,但是我收到了链接错误。 错误:“ 没有此类文件或目录crt1.o ”        “ 没有这样的文件或目录crti.o ” 我导出了库路径,并在命令行中给出了路径,但没有什么对我有用。我给出了以下命令。

clang -target arm-none-linux-gnueabi -sysroot = / path / toolchain / hello.c -I / path / toolchain / sysroot / usr / include / -L / path / toolchain / sysroot / usr / lib中

仍然是同样的错误 “ 没有此类文件或目录crt1.o ” “ 没有这样的文件或目录crti.o

期待任何帮助。 我正在使用clang-3.0,后来我下载了预建的二进制文件并升级到了clang-3.3。 在此先感谢。)

1 个答案:

答案 0 :(得分:0)

上述问题可以通过以下命令解决。

clang -target armv7-none-eabi -sysroot=/toolchain/path/to/sysroot/ hello.c -ccc-gcc-name arm-none-linux-gnueabi-gcc hello.c 

这里的目标是说clang编译器选择合适的目标。 sysroot说明了获取头文件和库的确切路径(无需提供包含和库路径)