1

我正在尝试使用 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。提前致谢。:)

4

1 回答 1

1

上面的问题可以通过下面的命令来解决。

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

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

于 2014-06-18T06:31:37.763 回答