温馨提示×

centos怎么配c交叉编译

小樊
47
2026-09-11 22:14:11
栏目: 智能运维

你问的“配 C 交叉编译”,通常是指在 CentOS 上搭建交叉编译环境,用来编译运行在 其他架构(如 ARM、MIPS、RISC-V 等)上的 C 程序。下面分几种常见情况说明。


一、最简方式:使用系统自带交叉编译器(推荐先试)

1. 安装交叉编译工具链

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-gccmips-linux-gnu-gcc

2. 编译 C 程序

// 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 自己构建工具链(高级)

适合:

  • 需要特定 GCC 版本
  • 特定 libc(glibc / musl)
  • 特定 CPU 优化

1. 安装依赖

sudo yum groupinstall -y "Development Tools"
sudo yum install -y gperf bison flex texinfo wget ncurses-devel

2. 下载 crosstool-ng

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

3. 配置并编译工具链

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

三、使用 Buildroot(适合做完整系统)

如果你不是只编译一个 C 文件,而是要:

  • 根文件系统
  • busybox
  • 内核

推荐:

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

五、常见坑提醒

  1. 头文件 / 库路径
    --sysroot=/path/to/sysroot
    
  2. 不要混用主机 gcc 和目标 gcc
  3. CentOS 7 默认 gcc 较老,必要时用 devtoolset

如果你告诉我:

  • 目标平台(ARM?什么板子?)
  • CentOS 版本
  • 只是编译程序还是做系统

我可以给你更精确的命令

0