2012-12-24 30 views
29

我已经编译过clang使用它作为ARM的交叉编译器(通过配置它与./configure --target=armv7l-unknown-linux-gnueabihf),但是当我尝试编译任何C代码时,它会尝试使用/usr/bin/as。我已经为ARM编译binutils,并且它们位于单独的目录中。我如何直接使用clang(或llvm)来使用我指定的汇编程序?如何使用自定义汇编程序进行叮当声?

+0

我知道我这样做是最近ly - 让我看看我是否有配置文件。对于ARM而言,它不应该使用机器代码生成器,而不是试图运行汇编器?你有没有尝试传递'--integrated-as'?你能用'-v'显示一个命令行和输出的例子吗? –

+0

我的配置行,虽然看起来没有太多的帮助:'../llvm/configure --target = mipsel-sde-elf --prefix =/some/prefix --enable-optimized'。这确实工作正常,并运行'/ some/prefix/mipsel-sde-elf-as'。也就是说,我通常使用集成的汇编程序,所以我还没有经过一段时间的测试。 –

+0

@CarlNorum我也有一个集成的汇编器('armv7l-unknown-linux-gnueabihf-llvm-as')和clang在同一个文件夹中,但它仍然使用'/ usr/bin/as'。我不确定'armv7l-unknown-linux-gnueabihf-llvm-as'是否在内部调用'/ usr/bin/as'。 – JosephH

回答

0

我总是在使用./configure从源代码目录进行配置时遇到了问题,最后放弃了。现在我总是从一个单独的目录配置,即../configure,虽然我被告知建议使用绝对路径进行配置。

您的ARM binutils应该安装在您用于clang的相同前缀中,并确保它们在配置& build clang时位于路径中 - 即PATH =/some/prefix/bin:$ PATH;/configure --target = armv7l-unknown-linux-gnueabihf。如果您为了打包目的而将它们保存在不同的目录中,请安装DESTDIR =应该帮助。

我一般不建铛,但我用devkitARM的buildscripts可能会有所帮助 - http://sourceforge.net/p/devkitpro/buildscripts/ci/c372699fc7b4de90eb044314ce5bed04db640291/tree/

+0

对不起,我从来没有在与之前的源目录相同的目录中配置clang。为了简洁,我在问题中包含的命令省略了“--prefix”标志。正如你从CarlNorum的评论中看到的那样,我确实注意到他包含了“--prefix”标志,但它仍然不适用于我。奇怪的是编译过程确实似乎在'bin'(带有正确的目标三元组)的文件夹中创建了集成的汇编器二进制文件,但它从不使用它。我一定会看看你在答案中包含的构建脚本。 – JosephH

2

尝试传递--host选项来配置,这将导致所有的CC AR等公用事业与armv7l-前缀未知的Linux gnueabihf- 如:

./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu 

由于使用的是具有希望配置自动工具来看看: automake Cross compiling

+0

我认为你误解了这个问题。 @JosephH在问如何使用clang交叉编译程序,但是你的答案与“如何交叉编译clang本身”有关。 –

相关问题