交叉编译到ARM

时间:2019-03-04 02:14:20

标签: arm llvm llvm-clang

我正在尝试使用LLVM从x86交叉编译到ARM。我已经在x86上构建了LLVM的标准版本(可以使用)。现在,我正在运行以下命令:

clang++ -v -g3 -O0 $< -o $@ $(FLAGS) -rdynamic --target=${ARM_TRIP} \
    --sysroot=${SYSROOT}/libc \
    -I${SYSROOT}/include/c++/8.2.1 \
    -I${SYSROOT}/include/c++/8.2.1/${ARM_TRIP} \
    -L${SYSROOT}/lib/gcc/${ARM_TRIP}/8.2.1 \
    -B${SYSROOT}/bin

ARM_TRIP是我的平台三元组,arm-linux-gnueabihf

它可以正常编译,但是不能链接(我正在使用arm链接器),因为LLVM会将X86参数传递给链接器:

"/path/to/arm-linux-gnueabihf/bin/ld" \
--sysroot=/path/to/libc -export-dynamic -EL -X --hash-style=gnu \
--no-add-needed --eh-frame-hdr -m armelf_linux_eabi -export-dynamic \
-dynamic-linker /lib/ld-linux-armhf.so.3 -o kld-arm (more files...) \
-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel (etc...)

我看到的问题是-lLLVMX86*。如何将其更改为ARM?这些文件存在于我的系统上,但是LLVM似乎无法识别它需要为我的ARM目标进行更改。编译LLVM时是否需要做一些特殊的事情,以告诉我可能要交叉编译?还是我只是打错了电话?

0 个答案:

没有答案