You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在amd64 Linux主机上构建arm64(aarch64)二进制文件并打包发布?

在amd64主机上构建aarch64 Linux C/C++二进制及打包指南

基于你使用的KDE neon(Ubuntu 20.04衍生版),以下是完整的交叉编译、打包流程:

1. 安装aarch64交叉编译工具链

直接通过官方源安装标准工具链:

sudo apt update && sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

验证安装是否成功:

aarch64-linux-gnu-gcc --version

2. 编译C/C++项目

根据项目使用的构建系统,选择对应配置方式:

2.1 Makefile项目

直接在编译时指定交叉编译器:

make CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++

若自定义Makefile包含硬编码编译器路径,需手动替换为aarch64-linux-gnu-gcc/aarch64-linux-gnu-g++。

2.2 CMake项目

方法1:命令行直接指定参数

mkdir build-aarch64 && cd build-aarch64
cmake .. \
  -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
  -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
  -DCMAKE_SYSTEM_NAME=Linux \
  -DCMAKE_SYSTEM_PROCESSOR=aarch64
make

方法2:使用工具链文件

创建aarch64-toolchain.cmake文件:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

# 确保只查找目标架构的库和头文件
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

然后编译:

cmake .. -DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake
make

3. 打包为DEB包

3.1 准备debian打包配置

若项目无debian/目录,用dh_make初始化:

dh_make --createorig -s -y

编辑debian/control文件,将Architecture字段设为arm64,并补充依赖、项目描述等信息。

3.2 交叉编译打包

直接指定架构构建:

DEB_BUILD_ARCH=amd64 DEB_HOST_ARCH=arm64 dpkg-buildpackage -b -us -uc

若需要干净构建环境,可使用pbuilder:

# 创建aarch64构建环境
sudo pbuilder create --architecture arm64 --distribution focal
# 构建包
sudo pbuilder build ../your-project_*.dsc

4. 打包为RPM包

4.1 安装RPM打包依赖

sudo apt install rpm crossbuild-essential-arm64

4.2 配置spec文件

修改项目的RPM spec文件,添加以下定义指定交叉编译参数:

%define _target_cpu aarch64
%define _host_cpu aarch64
%define __cc aarch64-linux-gnu-gcc
%define __cxx aarch64-linux-gnu-g++

同时将BuildArch字段设为aarch64。

4.3 构建RPM

rpmbuild --target aarch64 -ba your-project.spec

5. 验证二进制架构

用file命令确认生成的文件为aarch64架构:

file path/to/your/compiled/binary

输出应包含aarch64或ARM aarch64字样。

内容的提问来源于stack exchange,提问作者Ekaterina Ivanova iceja.net

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:20:27