Clang не компилирует код для платформ, отличных от x86

Я под Ubuntu 12.04 x86 64 бит, я скомпилировал 32-разрядную версию llvm/clang из официального репозитория svn успешно.

Теперь я пытаюсь скомпилировать код С++ для ARM, на данный момент меня не интересуют версии платформы, такие как armv5 vs armv7a, я сосредоточен на том, как работает коммутатор платформы для clang:

llvm-config --targets-built
ARM CellSPU CppBackend Hexagon Mips MBlaze MSP430 NVPTX PowerPC Sparc X86 XCore

но следующая команда не работает

clang++ -arch arm soft.cpp -o soft_ARM

вывод

clang-3: warning: argument unused during compilation: '-arch arm'

Я также использовал gcc-подобные варианты или другие комбинации, такие как -arch=arm, -arch=armv7a, -march=armv5, но ничего не работает.

После прочтения некоторых документов я заметил, что clang работает для ARM только под MAC OS X/Darwin, и он не должен работать для ARM под другой ОС.

Как я могу скомпилировать ARM с clang и что такое вывод llvm-config --targets-built действительно?

Ответ 1

-arch - только функция darwin. Вы должны использовать -target на платформах non-darwin. Кроме того, скомпилируйте llvm/target, указав целевой триплет или создайте ссылку от clang до -clang. В вашем случае целевым триплом будет arm-none-linux-gnueabi