【问题标题】:/usr/lib/x86_64-linux-gnu/libxml2.so: error adding symbols: File in wrong format/usr/lib/x86_64-linux-gnu/libxml2.so:添加符号时出错:文件格式错误
【发布时间】: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


【解决方案1】:

我认为这与 libxm2 有关。

# If libxml2 is available, make it available for c-index-test.
if (CLANG_HAVE_LIBXML)
  include_directories(SYSTEM ${LIBXML2_INCLUDE_DIR})
  target_link_libraries(c-index-test ${LIBXML2_LIBRARIES})
endif()

尝试添加

 -DLLVM_ENABLE_LIBXML2=0 

我用这个,效果很好。

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 2021-04-05
    • 2015-07-12
    • 2015-03-14
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多