【发布时间】:2020-10-26 11:41:25
【问题描述】:
我正在尝试在 x86_64 Linux 平台上为 ARM 64 位架构交叉编译 llvm-clang。 cmake 命令是:
cmake -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX=/home/suhas//llvm/llvm-arm/llvm-project/install/ -DLLVM_TABLEGEN=/home/suhas/llvm/llvm-10.0.0.src/build/bin/llvm-tblgen -DCLANG_TABLEGEN=/home/suhas/llvm/llvm-10.0.0.src/build/bin/clang-tblgen -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DCMAKE_CXX_FLAGS='-march=armv8-a -mcpu=cortex-a53' -target aarch64-linux-gnu --sysroot=/usr/aarch64-linux-gnu -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_PIC=False -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ ../llvm
然后我运行make 但得到以下错误:
/usr/lib/x86_64-linux-gnu/libxml2.so: error adding symbols: File in wrong format
有什么问题?任何帮助表示赞赏。
【问题讨论】:
-
CMake 不知道那些
-target aarch64-linux-gnu --sysroot=/usr/aarch64-linux-gnu命令。如果您尝试设置 sysroot,请改用-DCMAKE_SYSROOT=/usr/aarch64-linux-gnu。 -
我尝试使用 -DCMAKE_SYSROOT 运行它,但我仍然遇到同样的错误
-
您是否清除了 CMake 缓存,即在重新运行命令之前从构建文件夹中删除了
CMakeCache.txt? -
重读交叉编译说明:一定要读
-DCMAKE_CXX_FLAGS='-march=armv8-a -mcpu=cortex-a53 -target aarch64-linux-gnu --sysroot=/usr/aarch64-linux-gnu'。所有这些选项都需要添加到CMAKE_CXX_FLAGSvariable。更改设置后,需要清除 CMakeCache.txt。 -
是的,我已经删除了 CMakeCache.txt 文件。您能否发布整个 cmake 命令,我必须在再次开始构建之前输入,因为这需要很多时间。谢谢
标签: cmake cross-compiling llvm-clang arm64