使用buildroot制作交叉编译工具链

一、交叉编译

交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。

要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。

二、buildroot

buildroot 是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。

目前最新版是2022.05,下载地址

https://buildroot.org/download.html

历史版本下载地址

https://buildroot.org/downloads/

三、交叉编译工具链

1、安装环境

Ubuntu 20.04

2、安装软件

# 依赖工具、库
sudo apt install gcc make libncurses5-dev
# qemu模拟器,用于测试不同cpu架构编译的程序
sudo apt install qemu-user

3、安装步骤

wget https://buildroot.org/downloads/buildroot-2022.05.tar.xz
tar xf buildroot-2022.05.tar.xz
cd buildroot-2022.05/
make menuconfig

使用菜单配置

因为只需要交叉编译链,所以只需要配置几个地方即可,按Enter选择,按ESC两次退出当前菜单。

  • Target options -> Target Architecture -> 选择cpu架构(ARC、ARM、MIPS、PowerPC等等)

-> Target Architecture -> 选择类型(如ARM分为armv4、armv5、armv6等等)

  • Toolchain -> C library -> 选择c库类型(uclibc、glibc、musl)

->Kernel Headers -> 选择内核版本(也可以手动指定下载)

Target options:

Toolchain:

设置好按右方向键后选择Save保存配置

保存好后,多次点击Exit退出

开始编译,参数后面加入-j4表示4个线程编译,V=0表示简易输出日志。

make toolchain -j4 V=0

编译好后提示如下,如果编译的过程中报错,需要先解决报错问题。

工具链路径:

buildroot根目录/output/host

工具链中可执行文件:

加入环境变量示例:

cd buildroot-2022.05/output/host/bin
echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc
source ~/.bashrc

直接输入arm-linux-gcc即可使用工具链。

四、测试效果

测试程序helloworld.c:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv)
{
    printf("hello world\n");
    return 0;
}

静态编译arm版程序:

五、参考链接

https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91/10916911

https://blog.csdn.net/qq_44045338/article/details/109230692

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注