我要編譯的基本程序hello.c使用LLVM /鏘以產生中間和裝配機x86架構。 我用下面的命令:如何編譯使用LLVM針對不同的目標體系的計劃?
clang -O3 -emit-llvm hello.c -c -o hello.bc
llc hello.bc -o hello.s
它完美。如何生成其他架構的代碼說SPARC 32位?是否有鐺用於指定架構的任何標誌?
我要編譯的基本程序hello.c使用LLVM /鏘以產生中間和裝配機x86架構。 我用下面的命令:如何編譯使用LLVM針對不同的目標體系的計劃?
clang -O3 -emit-llvm hello.c -c -o hello.bc
llc hello.bc -o hello.s
它完美。如何生成其他架構的代碼說SPARC 32位?是否有鐺用於指定架構的任何標誌?
您可以運行llc --version
以獲取支持的目標列表。在我的機器上:
$ llc --version
LLVM (http://llvm.org/):
LLVM version 3.2svn
Optimized build with assertions.
Built Aug 30 2012 (23:29:11).
Default target: mipsel-sde-elf
Host CPU: corei7-avx
Registered Targets:
arm - ARM
cellspu - STI CBEA Cell SPU [experimental]
cpp - C++ backend
hexagon - Hexagon
mblaze - MBlaze
mips - Mips
mips64 - Mips64 [experimental]
mips64el - Mips64el [experimental]
mipsel - Mipsel
msp430 - MSP430 [experimental]
nvptx - NVIDIA PTX 32-bit
nvptx64 - NVIDIA PTX 64-bit
ppc32 - PowerPC 32
ppc64 - PowerPC 64
sparc - Sparc
sparcv9 - Sparc V9
thumb - Thumb
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
xcore - XCore
對於您的情況,您可能需要llc -march=sparc
。
你可以用指定的特定目標構建clang/llvm。默認情況下,不指定LLVM_TARGETS_TO_BUILD,將建立所有目標如下所示https://github.com/llvm-mirror/llvm/blob/master/CMakeLists.txt#L269