Clang没有为x86以外的平台编译代码

use*_*612 10 c++ arm llvm clang

我在Ubuntu 12.04 x86 64位下,我已llvm/clang成功从官方svn存储库编译了32位版本.

我现在正在尝试为ARM编译c ++代码,此时我并不关心像armv5vs 这样的平台版本armv7a,我专注于平台交换机的工作原理clang:

llvm-config --targets-built
ARM CellSPU CppBackend Hexagon Mips MBlaze MSP430 NVPTX PowerPC Sparc X86 XCore
Run Code Online (Sandbox Code Playgroud)

但以下命令不起作用

clang++ -arch arm soft.cpp -o soft_ARM
Run Code Online (Sandbox Code Playgroud)

输出是

clang-3: warning: argument unused during compilation: '-arch arm'
Run Code Online (Sandbox Code Playgroud)

我也曾尝试GCC样变体或其他组合一样-arch=arm,-arch=armv7a,-march=armv5但似乎没有任何工作.

在阅读了一些文档后,我注意到clang仅适用于ARM OS X/Darwin下的ARM,并且它不适用于其他操作系统下的ARM.

我如何用clang编译ARM以及它的输出llvm-config --targets-built是什么?

Ant*_*kov 8

-arch是仅限darwin的功能.您应该在非达尔文平台上使用-target.或者,编译llvm/target指定目标三元组或创建从clang到-clang的链接.在你的情况下,目标三元组将是arm-none-linux-gnueabi