Buildroot制作交叉编译工具链for X86_64 Kernel2.6

背景

现场使用linux版本差异大,有些内核版本甚至只有2.x,直接部署程序会报kernel too old,网上虽然有一些其它解决方法,但是存在隐患且不能升级现场系统,为此,可以采用交叉编译工具,在高版本4.x kernel 编译低版本kernel ,让程序正常运行。为此需要制作交叉编译工具,选用了buildroot.

Buildroot 使用

在github上下载相应程序,自行搜索下载方式,这部分略过,我采用的是buildroot-2023.02.6这一版。这里只记录交叉编译链的制作过程。

下载完后,目录基本为
在这里插入图片描述
进入这个目录,执行 make menuconfig,出现
在这里插入图片描述
接下来依次配置。

Target options

我的目标机器架构也是x86_64的,因此这样选择
在这里插入图片描述

Toolchain

在这里插入图片描述
Toolchain type 选择Buildroot toolchain(自建编译链),不使用External toolchain;
C library 我选用了musl-libc,libc的区别请自行搜索;
配置Kernel Headers 为Manually specifed linux version(手动指定linux版本,因为这个版本太低了,其他的选项都是3.x);
手动输入linux version 为2.6.32;
Customer kernel header series 为2.6.x;
其他红箭头的选项按照需要设置,不算太多重要。

System configuration

System configuration 中需要禁用掉系统初始化选项和 /bin/sh:
Init system:选择 none。
/bin/sh :设置为 none。
其他保持默认。
在这里插入图片描述

Kernel

取消选择。
在这里插入图片描述

Target packages

Target packages 禁用 busybox。
busybox:选项设为空。
在这里插入图片描述

Filesystem images

禁用 tar the root filesystem。
在这里插入图片描述
其他的选项都不必设置,保存,退出即可。

执行make sdk,即可编译出交叉编译工具链,如果编译过程中存在下载某些资源失败的情况,可以根据下载失败的链接,用科学上网的方式下载,并把它拷贝在dl文件夹下。

工具链使用

交叉编译工具链在 ./output/images 目录下,

在这里插入图片描述
将其复制到任意目录并解压
在这里插入图片描述
示例源码

#include <stdio.h>

int main()
{
    int a = 8;
    a >> 4;
    printf("test libc postion!\n");
    printf("a = %d\n",a);
    return 0;
}

交叉编译器gcc编译

/home/ubuntu/kernel2.26/x86_64-buildroot-linux-musl_sdk-buildroot/bin/x86_64-buildroot-linux-musl-gcc main.c  -o main -static

生成main,拷贝到目标机器中运行
在这里插入图片描述
可以看到运行成功!

PS: 编译使用交叉编译工具链的linux架构
在这里插入图片描述
参考来源:https://www.cnblogs.com/kele-dad/p/13125808.html

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值