在 Debian 上用 GCC 进行交叉编译,一般流程是:安装交叉编译工具链 → 用交叉编译器编译 → (可选)在目标机上运行或用 qemu 测试。下面按常见场景说明。
交叉编译:在 x86_64 的 Debian 上,编译出在 ARM / MIPS / RISC-V 等架构上运行的程序。
例如:
apt search gcc- | grep cross
常见名称:
gcc-aarch64-linux-gnu(ARM64)gcc-arm-linux-gnueabihf(ARM32)gcc-riscv64-linux-gnu(RISC-V)gcc-mips-linux-gnusudo apt update
sudo apt install gcc-aarch64-linux-gnu
安装后可用:
aarch64-linux-gnu-gcc --version
// hello.c
#include <stdio.h>
int main() {
printf("Hello from cross compile\n");
return 0;
}
aarch64-linux-gnu-gcc hello.c -o hello_arm64
file hello_arm64
输出应类似:
hello_arm64: ELF 64-bit LSB executable, ARM aarch64
如果目标系统有专属库(如树莓派、开发板):
aarch64-linux-gnu-gcc \
--sysroot=/path/to/target/rootfs \
hello.c -o hello
rootfs 通常来自:
debootstraptoolchain-arm64.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)
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-arm64.cmake ..
make
sudo apt install qemu-user-static
运行:
qemu-aarch64-static ./hello_arm64
libc 开发包apt install libc6-dev-arm64-cross
--sysrootDebian 上交叉编译 = 安装
gcc-<arch>-linux-gnu+ 用对应前缀编译器编译
如果你告诉我:
我可以给你更精确的命令。