【问题标题】:Linker gives undefined symbols error when cross compiling Halide交叉编译 Halide 时,链接器给出未定义符号错误
【发布时间】:2021-08-28 18:27:57
【问题描述】:

嘿,我正在尝试将 Halide 构建到主机 OSX 系统上 arm64-v8a Android 架构的静态库中。当我运行以下命令时,我得到下面的链接错误。我做错了哪一部分?

命令运行

$ cmake -S .-B build \
        -DCMAKE_CROSSCOMPILING=True \
        -DHalide_TARGET=arm-64-android \
        -DHalide_SHARED_LLVM=ON \
        -DBUILD_SHARED_LIBS=OFF \
        -DLLVM_DIR=/usr/local/Cellar/llvm/12.0.1/lib/cmake/llvm \
        -DClang_DIR=/usr/local/Cellar/llvm/12.0.1/lib/cmake/clang \
        -DLLD_DIR=/usr/local/Cellar/llvm/12.0.1/lib/cmake/lld \
        -DLLVM_TABLEGEN=/usr/local/Cellar/llvm/12.0.1/bin/llvm-tblgen \
        -DCLANG_TABLEGEN=/usr/local/Cellar/llvm/12.0.1/bin/ \
        -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-android \
        -DLLVM_TARGET_ARCH=aarch64 \
        -DLLVM_TARGETS_TO_BUILD=aarch64 \
        -DCMAKE_BUILD_TYPE=Debug
$ cmake --build ./build

链接错误

ld: warning: ignoring file variable_num_threads.a, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20 )
ld: warning: ignoring file variable_num_threads.runtime.a, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20 )
Undefined symbols for architecture x86_64:
  "_halide_join_thread", referenced from:
      _main in variable_num_threads_aottest.cpp.o
  "_halide_set_num_threads", referenced from:
      mess_with_num_threads(void*) in variable_num_threads_aottest.cpp.o
      _main in variable_num_threads_aottest.cpp.o
  "_halide_spawn_thread", referenced from:
      _main in variable_num_threads_aottest.cpp.o
  "_variable_num_threads", referenced from:
      _main in variable_num_threads_aottest.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

  • 值得注意的是:noneLLVM_* 变量(LLVM_DIR 除外)在 libHalide 构建中执行任何操作。此外,Halide_TARGET 仅影响生成器测试,不影响主库。
  • 感谢您的留言

标签: c++ cmake cross-compiling halide


【解决方案1】:

我们目前不支持交叉编译 libHalide。如果您想为 arm64-v8a 构建管道,您应该使用Halide::Generator 基础架构在构建机器上运行生成器,并在那里为您的目标架构生成库。

但是,我正在亲自处理它...https://github.com/halide/Halide/pull/6071

几周后再回来看看!

【讨论】:

猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 2020-12-05
  • 2016-12-04
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多