如何在 debian 交叉打包期间设置 CC 环境变量

use*_*160 5 debian gcc cross-compilation

我正在尝试在我的 AMD64 Ubuntu 操作系统上为 ARM64 平台构建一个 debian 包。我执行命令

debuild -us -uc --host-arch arm64
Run Code Online (Sandbox Code Playgroud)

但得到警告

dpkg-architecture: warning: specified GNU system type aarch64-linux-gnu does not match CC system type x86_64-linux-gnu, try setting a correct CC environment variable
Run Code Online (Sandbox Code Playgroud)

所以想知道如何设置 CC 环境变量,正如警告所建议的那样。对于我的目标操作系统,我通常会使用

/opt/l4t-gcc-toolchain-64-bit-32.1/install/bin/aarch64-linux-gnu-gcc
Run Code Online (Sandbox Code Playgroud)

谢谢。

use*_*.dz 1

我不确定从长远来看缺少什么,因为OP没有提到任何关于它的目标包的信息,无论如何检查我这边的解决方案。很高兴听到您对类似案例的反馈。

该消息是关于 C 编译器 (CC) 环境变量对于所请求的目标体系结构不方便。尝试dpkg-cross一下可以帮助您设置所有 ENV 变量。

debuild是一个使用的助手dpkg-buildpackage

  1. 安装dpkg-cross

    sudo apt install dpkg-cross build-essential
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在构建之前设置交叉编译配置变量和帮助标志

    set CONFIG_SITE=/etc/dpkg-cross/cross-config.arm64
    set DEB_BUILD_OPTIONS=nocheck
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试再次构建它

如果不起作用,请尝试debuild传递dpkg-buildpackage. 所有步骤都记录在Debian Wiki: Building with dpkg-buildpackage中。

笔记:

如果您正在构建自己的软件包,那么最好阅读如何使您的软件包 Debian 交叉编译友好:交叉构建友好软件包的指南