我的Ubuntu版本是14.04
官网地址:
3.安装arm-gcc交叉编译工具链:sudoapt-getinstallarm-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中查找
拱形?=$(子拱形)
CROSS_COMPILE?=$(CONFIG_CROSS_COMPILE:"%"=%)
并改为:
ARCH?=手臂
CROSS_COMPILE?=arm-linux-gnueabi-
节省。
6、执行命令:makeimx_v6_v7_defconfig
会生成一个隐藏的.config文件,可以通过ls -a命令显示
7、安装图形界面:sudoapt-getinstallncurses-dev
8、执行makemenuconfig打开图形界面,选择图形界面配置内核。 您可以选择您想要的功能。
按 y 选择
按 n 取消
按 m 将函数编译成模块
选择后,保存退出。
9.执行make-j2zImage开始编译内核
-j2:启动两个线程进行编译。 -j4是开启4线程编译
zImage是我们要生成的目标图像
注:编译过程中可能会出现错误,我有:
/bin/sh:1:lzop:未找到
出现错误后,我就开始慌了,然后就向百度报错,网上一般都有解决方案。
我对这个问题的解决方案是:
须藤 apt-get 安装 zop
后:
make-j2zImage
继续编译,从错误处继续编译。
目前我先把步骤列出来,等理解清楚了之后再明白每一步的含义。
过程中一定有什么不好的地方centos内核源码编译,希望大鳄鱼能够帮忙并原谅我。
编译内核操作的更新:
上述编译步骤会修改Makefile的内容。 在实际使用中,亲自修改Makefile并不是一个好习惯,例如:
1.我们的交叉编译链通常都是移植的,不同的人可能使用不同的(路径、版本)。 硬写在Makefile上,其他同学用你的源码可能不知道,很菜鸟
2、交叉编译的环境变量个人认为最好在使用的时候配置一下,这样比较灵活。 它是一个同名的交叉编译链。 当版本不同时centos内核源码编译,动态配置有很大的优势。
为此,在编译时,我们通过脚本来配置交叉编译链,通过设置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。
这些方法,个人觉得比较灵活。仅供参考