【问题标题】:cross-compile pocl with ARM cross-compiler on Ubuntu x64 PC在 Ubuntu x64 PC 上使用 ARM 交叉编译器交叉编译 pocl
【发布时间】:2020-08-05 22:55:47
【问题描述】:

我想在 Ubuntu x64 PC 上用 ARM 交叉编译器交叉编译 pocl。

  • 使用在 Ubuntu x64 PC 上运行的 ARM 交叉编译器编译 pocl1.4 并生成其 ARM 可执行文件

  • 离线编译 kernel.cl 并使用在 Ubuntu x64 PC 上运行的 poclcc 生成它的 ARM 可执行文件

我尝试了以下方法:

1. download llvm9, make and install to Ubuntu
 $cmake -G "Unix Makefiles" ../llvm-9.0.0.src -DCMAKE_INSTALL_PREFIX=/home/llvm -DCMAKE_BUILD_TYPE=Release
 $make -j12
 $sudo make install

2. download pocl1.4, make and install to Ubuntu
 $cmake  -DLLC_TRIPLE=aarch64-linux-gnu -DLLC_HOST_CPU=cortex-a53 -DWITH_LLVM_CONFIG=/home/llvm_ubuntu/bin/llvm-config ..
 $make
 $sudo make install

但我得到了错误。

/usr/bin/ld: unrecognised emulation mode: aarch64linux
Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om i386pep i386pe
error: linker command failed with exit code 1 (use -v to see invocation)

有人有办法解决吗?

【问题讨论】:

  • 似乎调用了错误的ld。您需要安装一个 ARM ld (apt-get install binutils-aarch64-linux-gnu) 并告诉 CMake 使用它(即调用 aarch64-linux-gnu-ld 而不仅仅是 ld)。
  • 谢谢。我这样做了,但错误消息出来了。 CMakeLists.txt SET(CMAKE_LINKER _path to_/aarch64-linux-gnu-ld)

标签: arm cross-compiling pocl


【解决方案1】:

从 pocl 文档中复制:

现在可以在 x86-64 上交叉编译 pocl 以在 ARM/MIPS/etc 上运行,但仅限于 LLVM-less 构建。有一个 ToolchainExample.cmake 文件;以不同的名称复制它,然后按照文件中的说明进行操作。

ToolchainExample.cmake 包含您需要了解的几乎所有内容。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 2013-10-10
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多