你问的“配 C 交叉编译”,通常是指在 CentOS 上搭建交叉编译环境,用来编译运行在 其他架构(如 ARM、MIPS、RISC-V 等)上的 C 程序。下面分几种常见情况说明。
以 ARM 32 位 为例:
sudo yum install -y arm-linux-gnu-gcc
或者:
sudo yum install -y gcc-arm-linux-gnu
查看是否安装成功:
arm-linux-gnu-gcc --version
(不同架构工具名不同,例如 aarch64-linux-gnu-gcc、mips-linux-gnu-gcc)
// hello.c
#include <stdio.h>
int main() {
printf("hello cross compile\n");
return 0;
}
编译:
arm-linux-gnu-gcc hello.c -o hello_arm
查看文件类型:
file hello_arm
输出类似:
ELF 32-bit LSB executable, ARM, ...
crosstool-ng 自己构建工具链(高级)适合:
sudo yum groupinstall -y "Development Tools"
sudo yum install -y gperf bison flex texinfo wget ncurses-devel
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.25.0.tar.bz2
tar xjf crosstool-ng-1.25.0.tar.bz2
cd crosstool-ng-1.25.0
./configure --prefix=/opt/crosstool-ng
make
sudo make install
export PATH=/opt/crosstool-ng/bin:$PATH
mkdir ~/ct-ng
cd ~/ct-ng
ct-ng list-samples
ct-ng arm-unknown-linux-gnueabi
ct-ng menuconfig
ct-ng build
生成的编译器在:
~/x-tools/arm-unknown-linux-gnueabi/bin
如果你不是只编译一个 C 文件,而是要:
推荐:
sudo yum install -y git make gcc ncurses-devel
git clone https://github.com/buildroot/buildroot.git
cd buildroot
make menuconfig
make
| 目标架构 | 编译器前缀 |
|---|---|
| ARM 32 | arm-linux-gnueabi-gcc |
| ARM 64 | aarch64-linux-gnu-gcc |
| MIPS | mips-linux-gnu-gcc |
| RISC-V | riscv64-linux-gnu-gcc |
--sysroot=/path/to/sysroot
devtoolset如果你告诉我:
我可以给你更精确的命令。