基于arm的Linux内核编译

我的Ubuntu版本是14.04

1、在官网下载Linux内核源码
    官网地址:https://www.kernel.org/

2、解压Linux内核源码

3、安装arm-gcc交叉编译工具链:sudo apt-get install arm-linux-gnueabi

4、内核版本大于3.0的方法:(2.6的版本好像更直接一点)
    到Linux内核源码的arch/arm/config找到对应的配置文件,将需要的配置文件拷贝到Linux内核的根目录下,例如:
    我使用的内核版本是:linux-3.16.57.tar.xz
    我到  ./linux-3.16.57/arch/arm/configs目录下,找到我对应的配置文件。我的硬件型号是NXP的IMX7,所以我将imx_v6_v7_defconfig文件拷贝到./linux-3.16.57目录下

    
5、修改Makefile,Makefile在解压的源码的根目录下:
    打开Makefile在Makefile中找到

        ARCH        ?= $(SUBARCH)
        CROSS_COMPILE    ?= $(CONFIG_CROSS_COMPILE:"%"=%)
    并修改成:
        ARCH        ?= arm
        CROSS_COMPILE    ?= arm-linux-gnueabi-
     保存。
        
6、执行命令:make imx_v6_v7_defconfig
    会生成一个.config的隐藏文件,通过ls -a命令可以显示出来

7、安装图形界面:sudo apt-get install ncurses-dev

8、执行make menuconfig打开图形界面,通过对图形界面的选择来配置内核,你想要什么功能,你就选择什么功能。
    按 y 是选中
    按 n 是取消
    按 m 是将改功能编译成模块
    
    选择完毕之后,保存,退出。
    
    
9、执行 make -j2 zImage 开始编译内核
    -j2 :    开启两个线程进行编译。-j4就是开启4个线程编译
    zImage    是我们要生成的目标镜像

 

注:在编译的过程中,有可能会出现错误,我就出现了:

/bin/sh: 1: lzop: not found

出现错误后,我开始很慌张,后来我把错误进行了百度,网上一般都有解决的办法。

我这个问题解决的办法是:

sudo apt-get install lzop

然后 :

      make -j2 zImage

继续编译,编译会从错误处继续。

目前先将步骤罗列出来,后面等我自己了解的更深了,再详解每一步的含义。
过程中肯定有不好的地方,希望大佬能帮忙指正。

关于编译内核操作的更新:

上面介绍的编译步骤,会去更改Makefile里面的内容。在实际的使用过程中,更改Makefile个人觉得不是一种好的习惯,比如:

1、我们的交叉编译链一般都是移植过来的,不同的人使用的可能不一样(路径、版本)。在Makefile里面写死,其他同事用你的源码的时候,可能不知道。特别是新手

2、交叉编译的环境变量个人觉得最好在使用的时候配置,这样灵活度更高。特别是名字一样的交叉编译链,版本不同时,动态配置优势很大。

因此,在编译的时候,我们通过脚本配置交叉编译链,通过设置Makefile的参数去指定交叉编译链,这种方式更适合公司里面实际的开发环境。

如我的编译脚本build.sh内容如下:

#!/bin/bash

export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi/arm-poky-linux-gnueabi-
export PATH=/usr/bin/arm-linux-gnueabi/:$PATH

# make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- distclean
# make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- imx6q_sabresd_defconfig
# make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
# make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules

make -j 16 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage

上面的脚本里面,配置了交叉编译链的相关环境,然后在make的时候,指定 ARCH和CROSS_COMPILE。

这种方式,个人感觉更灵活。仅供参考

 

 

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey_llll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值