Linux内核编译的各种坑

来源:互联网 发布:华为防火墙开放端口 编辑:程序博客网 时间:2024/06/07 06:57

    最近在进行Linux内核编译的时候遇到了很多bug。在此一一列出并给出我的解决方法,至于编译步骤什么的网上一大堆。

1.用ubuntu12编译Linux 3.8内核源码,编译成功了,但是在进行安装的时候,由于虚拟机内存才20G,直接内存塞满了。T...T,然后去扩容,直接系统崩溃,然后直接下一个最新的ubuntu16.因为老版本的是厂家给的,现在没啦。


2.于是乎,用ubuntu 16去编译Linux 3.8 内核源码,出现了‘fatal error:linux/compiler-gcc5.h:No such file’的错误,这时最好 不要去修改什么文件,因为即使你成功让这个bug消失,后面还会出现很多bug。最好的做法是去降低gcc等软件的版本。这样做的原因可以 进内核源码的Documention/Changes文件了解,里面说了该版本的源码最低要什么版本的gcc,什么版本的make,等等。

用gcc -v 看了gcc版本,当前是gcc5版本,就降低成gcc4.7。文本末尾附有有降低方法。

虽然里面没有说gcc太新行不行,但是通过本人亲自踩坑,验证确实不行。相信我,嵌入式新人肯定会遇到很多系统,软件,工具等各种版本不符的bug,所以降低gcc版本是必须的。

3.在makefile这里转了一天,然后转出去之后还不知道怎么出去的。也就是自己写的第一个版本的Makefile,找了一天的错误,就是找不出来,总是说报这个错:

  M=/home/master/myfile/hello: is not a dir or file 

  recipe target for module failed.

最后,重新抄写一遍,居然成功了。可是和之前写的Makefile对比,并没发现问题。


降低gcc版本的方法:http://blog.csdn.net/ice_moyan/article/details/50504798

编译步骤可参考:http://www.cnblogs.com/ddk3000/p/5051081.html

这个编译步骤也有些出入,比如它里面没有make modules,又比如它修改timeout的文件根本不一样。

所以我用的是ubuntu16.04LT是下修改timeout的方法:https://www.ssdax.com/2347.html#prettyPhoto

timeout修改成功图



内核装载成功图:

驱动运行成功图:


原创粉丝点击