【问题标题】:How to compile a source into an ARM binary如何将源代码编译成 ARM 二进制文件
【发布时间】:2021-01-06 20:02:58
【问题描述】:

我想编译 VTK-DICOM 以在 ARM Raspberry Pi (Raspbian) 上运行。有可能吗?我应该从哪里开始?

【问题讨论】:

  • 是ARMv6还是ARMv7?
  • 我记得是 ARMv6

标签: cmake raspberry-pi binary arm raspbian


【解决方案1】:

为 Raspbian Debian Buster 映像和 ARMv6 构建

本教程还支持基于 ARMv6 CPU 的旧版 Rasperry Pi(A、B、B+、Zero)。 也可以看看: GCC 8 Cross Compiler outputs ARMv7 executable instead of ARMv6

设置工具链

没有包含更新工具链的官方 git 存储库(请参阅 https://github.com/raspberrypi/tools/issues/102)。

这是一个 github 存储库,其中包括基于 GCC8 和更新版本的 ARMv6 构建和预编译工具链:

https://github.com/Pro/raspi-toolchain

正如项目自述文件中所述,这些是获取工具链的步骤。您也可以自己构建它(有关详细信息,请参阅自述文件)。

  1. 下载工具链:
wget https://github.com/Pro/raspi-toolchain/releases/latest/download/raspi-toolchain.tar.gz
  1. 提取它。注意:工具链必须在 /opt/cross-pi-gcc 中,因为它与位置无关。
sudo tar xfz raspi-toolchain.tar.gz --strip-components=1 -C /opt
  1. 你已经完成了!工具链现在位于/opt/cross-pi-gcc

  2. 可选,将工具链添加到您的路径中,添加:

export PATH=$PATH:/opt/cross-pi-gcc/bin

到名为~/.bashrc的文件末尾

现在您可以注销并重新登录(即重新启动终端会话),或在终端中运行 . ~/.bashrc 以在当前终端会话中获取 PATH 添加。

从 Raspberry PI 获取库

要为您自己的 Raspberry Pi(可能安装了一些自定义库)进行交叉编译,您需要将这些库安装到您的主机上。

创建一个文件夹$HOME/raspberrypi。 在您的 raspberrypi 文件夹中,创建一个名为 rootfs 的文件夹。

现在您需要将整个 /lib/usr 目录复制到这个新创建的文件夹中。我通常把 rpi 镜像打开并通过 rsync 复制它:

rsync -vR --progress -rl --delete-after --safe-links pi@192.168.1.PI:/{lib,usr,opt/vc/lib} $HOME/raspberrypi/rootfs

192.168.1.PI 替换为您的 Raspberry Pi 的 IP。

使用 CMake 编译您的项目

要告诉 CMake 使用你自己的工具链,你需要有一个初始化编译器设置的工具链文件。

从这里获取这个工具链文件: https://github.com/Pro/raspi-toolchain/blob/master/Toolchain-rpi.cmake

现在您应该能够编译您的 cmake 程序,只需添加以下额外标志:-D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake 并设置正确的环境变量:

export RASPBIAN_ROOTFS=$HOME/raspberry/rootfs
export PATH=/opt/cross-pi-gcc/bin:$PATH
export RASPBERRY_VERSION=1
cmake -DCMAKE_TOOLCHAIN_FILE=$HOME/raspberry/Toolchain-rpi.cmake ..

这里显示了一个示例 hello world: https://github.com/Pro/raspi-toolchain/blob/master/build_hello_world.sh

来源:

https://stackoverflow.com/a/58559140/13859552

【讨论】:

    猜你喜欢
    • 2022-08-20
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多