我已经编译了 clang 以将其用作 ARM 的交叉编译器(通过使用 配置它./configure --target=armv7l-unknown-linux-gnueabihf
),但是当我尝试编译任何 C 代码时,它会尝试使用/usr/bin/as
. 我已经为 ARM 编译了 binutils,它们位于单独的目录中。如何指示 clang(或 llvm)使用我指定的汇编程序?
2 回答
尝试传递 --host 选项进行配置,这将导致所有 cc ar 等实用程序以 armv7l-unknown-linux-gnueabihf- 为前缀,例如:
./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu
由于您正在使用带有希望 autotools 的配置,请查看: automake Cross compile
我一直在使用 ./configure 从源目录进行配置时遇到问题,最后放弃了。这些天来,我总是从一个单独的目录进行配置,即 ..//configure 尽管有人告诉我建议使用绝对路径进行配置。
您的 ARM binutils 应该安装在您用于 clang 的相同前缀中,并确保它们在您配置和构建 clang 时位于路径中 - 即 PATH=/some/prefix/bin:$PATH; /configure --target=armv7l-unknown-linux-gnueabihf。如果您出于打包目的将它们保存在单独的目录中,那么 make install DESTDIR= 应该会有所帮助。
我通常不构建 clang,但我用于 devkitARM 的构建脚本可能会有所帮助 - http://sourceforge.net/p/devkitpro/buildscripts/ci/c372699fc7b4de90eb044314ce5bed04db640291/tree/