编译linux-2.6.18内核出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译linux-2.6.18内核出错相关的知识,希望对你有一定的参考价值。
lhg@ThinkPad-L430:/usr/src/linux-2.6.18$ sudo make -j4
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CHK include/linux/compile.h
CC kernel/mutex.o
LD kernel/built-in.o
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `.text.lock.mutex':
mutex.c:(.sched.text+0x1aba): undefined reference to `__mutex_lock_slowpath'
mutex.c:(.sched.text+0x1ac4): undefined reference to `__mutex_unlock_slowpath'
make: *** [.tmp_vmlinux1] Error 1
请各位网友帮忙解决,谢谢!
gcc 版本是4.6.3的
我使用的是Ubuntu 12.04的系统配置,3.11.0-19的内核,该配置用在2.6.32.63内核上可以编译通过,用在2.6.18内核就编译通不过了,出现了上述编译错误。
追答从高版本到低版本的兼容问题,仔细检查你的内核配置吧。
追问采用2.6.18内的默认配置,还是这个编译问题,这就排除了是内核配置的问题了。
追答你这个内核源码是不是之前没有用过的那种?如果你没有做错,那么就是这两个需要自己实现,写一些代码
追问不是配置的问题,是gcc版本的问题,用4.4.7编译就正常,不会报上面那个错误。
追答又是编译器的问题...解决了就好。
本回答被提问者采纳3.23linux内核编译学习
写了一个小时,结果图书馆网不好,结果没保存,嘤嘤嘤,来重新返工了。
昨天的操作系统第一个实验,编译linux内核,看成实验教程做比较简单,过程也比较顺利。但还有一些小问题。老师要求用Ubuntu14.10,开始自己在极速上随便下个 Ubuntu GNOME 15.10,装起来蛮快的,进系统之后美瞎了,但是怕后续实验出错,就没敢在这个上面编译,哎是个遗憾。后来直接用的之前装Tinyos的ubuntu,内核版本是linux 3.19.1,没用更新的内核版本试下,又是个遗憾。
第一步,解压,因为直接用命令在网络上下载会出现网络错误,所以直接用网教上下载的老师的内核,copy到虚拟机里直接解压的:
sudo tar xvJf ./linux-3.19.1.tar.xz
cd ./linux-3.19.1
第二步安装ncurses,之前照做也没思考这个是什么,后来经老师启发也查了一下:原来作用是提供字符终端处理库;输入的命令:
sudo apt-get install libncurses5-dev build-essential kernel-package
有两个tips:
(1)libncurses5-dev
是为了之后配置内核能运行make menuconfig
程序做准备;build-sesstial
为编译工具,kernel-package
是编译内核工具。
(2)如果系统显示无法查找到这三个文件,输入#apt-get update
更新数据源
其实我做的时候比较顺利。完全无视这两个tips了,系统并没有显示无法查找到这三个文件。
第三步应该是图形化的内核配置,关于这个命令,加一个连接make menuconfig
,讲的比较详细:
sudo make menuconfig
一个tips是命令执行完成后打开配置菜单,直接关闭即可,不进行改动。实际上却是自动跳出来一个配置菜单,亲测选Exit和Save都没影响。
之后最关键的一步开始编译内核了:
sudo make
命令虽短,但执行起来超级慢。也可能是我电脑的问题,足足编译了一个下午加半个晚上,期间好多次我都以为要宕机了TAT。听同学们说普遍情况是3—4h,快的也有1个多小时的,像我一样7、8h也有几个。据说有加快编译速度的方法,等下补充
第五步,安装内核模块:
sudo make modules_install
sudo make install
这两个命令执行起来比编译快多了,不过这里有个坑让我在找老师检查的时候差点挂掉,立个flag等下说。
最后一步,修改引导菜单配置,编辑启动项的菜单选项。这步自己开始比较晕,不知道怎么找boot/grub/grub.cfg,后来找到了方法:
可以sudo gedit /boot/grub/grub.cfg
,menu entry“”里面修改添加了自己的学号,此处应该注意是改的是菜单还是子菜单,不然可能找不到。
Ending,开始重启,虚拟机之后我是开机长按Esc,才能进启动项。
最后问题出在给老师检查的时候,因为第一次做根本没怎么思考,老师直接问我装好的linux内核模块在哪,直接懵逼了。只知道解压好的文件在根目录啊,内核模块是什么啊。后来知道原来内核模块是在/boot下的两个.img文件。感谢老师,是自己学东西只浮于表面了,以后还是要多多思考多多总结呀~
以上是关于编译linux-2.6.18内核出错的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核编译出错:make zimage命令;错误提示:make :***No rule to make target ‘zimage’. stop .