ubuntu编译3.5内核步骤
1、win7下安装VMware虚拟机,VMware-workstation-full-11.1.2,序列号: 1F04Z-6D111-7Z029-AV0Q4-3AEH8。
2、安装ubuntu 12.04.02系统
http://mirrors.163.com/ubuntu-releases/ 网易的开源镜像网站
http://mirrors.sohu.com/ubuntu-releases/ 搜狐的开源镜像网站
3、将下好的 linux-3.5-20140422 内核copy到ubuntu的 /home目录下,解压到/usr/src目录下。
需要用到的命令:
tar zxvf test.tgz -C 指定目录
比如将/home/linux-3.5-20140422解压到 /usr/src目录
tar zxvf /home/linux-3.5-20140422 -C /usr/src
参数:
-c :create 建立压缩档案的参数;
-x : 解压缩压缩档案的参数;
-z : 是否需要用gzip压缩;
-v: 压缩的过程中显示档案;
-f: 置顶文档名,在f后面立即接文件名,不能再加参数
4、编译内核前,需要做的准备工作:
1)解决下载慢的问题:
1、首先备份Ubuntu12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表)
2、sudo gedit /etc/apt/sources.list (打开Ubuntu 12.04源列表文件)
3、更新源 阿里源 http://mirrors.aliyun.com/help/ubuntu
4、更新源 sudo apt-get update
升级源:sudo apt-get upgrade
2) rm /var/lib/dpkg/lock
解锁 解决apt-get不能下载问题
Apt-get update
3)安装软件
apt-get install +软件名称
Minicom 串口
build-essential (基本的编程库(gcc, make等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig要调用的)
libqt3-headers (make xconfig要调用的)
automake
vim
在命令行下,输入命令:sudo vim /etc/vim/vimrc
set nu // 在左侧行号
set tabstop //tab 长度设置为 4
set nobackup //覆盖文件时不备份
set cursorline //突出显示当前行
set ruler //在右下角显示光标位置的状态行
set autoindent //自动缩进
4)64位的操作系统没有32位的类库,而android的SDK是要32位支持的,如果没装make就会报下面的错!
CC scripts/mod/empty.o
/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
make[2]: *** [scripts/mod/empty.o] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2
所以要
sudo apt-get update
sudo apt-get install ia32-libs
5、安装交叉编译环境
解压命令tar xvzf arm-linux-gcc-4.3.2 -C /注意以上命令必须要有-C而且是大写,后边有个空格也要注意。
配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出来文本编辑器后在文件最后(最后一行)加上下面代码:export PATH=安装路径:$PATH
安装兼容库,在终端输入:sudo apt-get install g++-multilib
保存关闭后,注销当前用户,用root账号重新登录系统(使刚刚添加的环境变量生效)。
此时你可以在控制台输入: arm-linux-gcc -v 如果安装成功将会输出 arm-linux-gcc的版本号。
6、修改Makefile文件
CROSS_COMPILE =arm-linux- 注意=和arm之间没有空格
7、make dep
根据以往的经验,这一步是必须的,但是这次编译的时候,系统提醒我没必须要执行这个命令: make dep
make clean / make mrproper
Linux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,清理旧的编译生成的文件及其他配置等文件,所以,相当于Clean
make distclean 清除配置
在编译内核之前,用户必须首先完成必要的配置。Linux内核提供了数不胜数的功能,支持众多的硬件体系结构,这就需要用户对将要生成的内核进行裁减。
当用户完成配置后,配置工具会自动生成.config文件,它被保存在内核代码树的根目录下。用户可以很容易找到它,当然用户也可以直接对这个文件进行简单的修改。但是当你修改过配置文件之后,你必须通过下面的命令来验证和更新配置:make oldconfig
make menuconfig
加载.config文件
8、make 编译内核
根目录下生成vmlinux和system.map
Arch/arm/boot 目录下生成zImage
9、make modules