Кросс-компиляция в ARM - PullRequest
       16

Кросс-компиляция в ARM

0 голосов
/ 04 марта 2019

Я пытаюсь выполнить кросс-компиляцию из x86 в ARM, используя LLVM.Я построил стандартную версию LLVM на x86 (которая работает).Теперь я выполняю следующую команду:

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.

Компилируется нормально, но не может связываться (я использую рукукомпоновщик), поскольку 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, чтобы сказать, что я могу захотеть сделать кросс-компиляцию?Или я просто не правильно его называю?

...