如何加快编译内核的速度

黄瑞圆 2019-12-21 19:39:00

推荐回答

在开发大型的、多模块的程序过程中,离不开make工具的使用。在使用makefile工具对多个源程序进行编译、连接时,首先必须要确保你需要编译的程序都是正确的,然后将编译各个源程序按照一定的先后顺序写入到一个makefile文件中,在此编译过程中,到底哪一个源程序是只编译、不连接;哪一个源程序是需要等别的源程序都编译好了之后,再进行最后的连接,这些都必须写清楚。而且还需要注意的就是:各个源程序的编译、连接的顺序在makefile文件中的先后顺序是很重要的,这一点绝对不能够写错。否则的话,就无法实现内核的正确编译。只要做到了熟练使用makefile文件的编写,那么肯定就可以起到加快编译内核速度的目的。因为只有那些被修改过的源程序才会被编译、而那些未被修改过的源程序不会被编译,最后再进行统一的链接,产生出最终的可执行程序。
龙宣霖2019-12-21 20:05:10

提示您:回答为网友贡献,仅供参考。

其他回答

  • Ubuntu系统1.准备工作切换为管理员权限,sudo–i输入用户密码进入root权限apt-getinstallbuild-essentialkernel-packagelibncurses5-devlibqt3-headersbuild-essential基本的编程库最后创建initrd文件:mkinitramfs-o/boot/initrd.img-linux-3.2.127.makeinstall以后,系统自动更新了启动项,可以cat/boot/grub/grub.cfg看下.之前的启动项不能删除,如果编译内核不成功,之前的启动项又不见了,系统也就跪了8.reboot官方电话官方网站向TA提问。
    齐新林2019-12-21 20:54:36
  • 根据我当时编译、链接一个完整的Linux操作系统的内核的时间还是比较长的。尤其是你并不能够保证在整个的编译、链接一个完整的Linux操作系统内核过程中,一点儿错误都没有,在此过程中有可能出现各种各样的错误,这才是最、最烦人的事情,也是导致编译内核时间延长的最根本原因。所以说,如果非要说出一个数量级的话,我那会儿编译内核是在小时数量级上的。
    辛国红2019-12-21 20:36:58
  • 一定程度上说:是的。自己编译内核可以作深度裁剪定制,把不需要的东西去掉,这样至少在内存占用、存储空间、启动速度上是有优势的。但前提是你得知道自己在干什么。
    贺齐辉2019-12-21 20:19:12
  • make时加参数-jXX是你的CPU核心数量+1。可以加快你的编译速度。我的本本T5450编译需要10分钟。我的内核是针对机器剪裁了的。不剪裁的全功能内核貌似我就需要30分钟了。
    边双喜2019-12-21 19:55:27

相关问答

转自知乎蓝色我最近和Clang/LLVM打交道比较多,目前游离在LLVMIR和IBMWCode之间。对于学习Clang/LLVM来说,其实需要看你做什么,是研究C,C++,Objective-C在Clang的实现,抑或着是想利用Clang做AST层面的事情,还是说想要利用LLVMIR来做一些事情,抑或着你是想要添加LLVM优化,还是说想要为LLVM添加新的体系结构支持.......Clang/LLVM现在都很大了,所以需要了解好自己想要的是什么,然后去针对的阅读,而非直接就开始一大块的开始,这实在是太大了。而在阅读源代码之前,无论如何,首先是需要基本的编译原理知识。你需要知道我们编译器的几个基本步骤,如词法分析,语法分析,语意分析,代码生成等过程,有了这个基本的思路,你才不至于迷失在Clang的浩海代码中,如看见Sema,AST,CodeGen这样的字眼你也能对应上这是哪个阶段的,若你想要了解C,C++,Objective-C等的实现,大部分都要集中在Lexer,Parser,AST,Sema等部分。与此同时,若你想要理清楚,明白为什么这么实现,如C++。那么,你还需要备一份C++标准,并且熟悉C++标准的常用语,至少可以分清楚Declaration,Definition,L-Value,R-Value等,因为你会看见Clang有很多Decl,若不理解Declaration,你很难理解为什么会有这么多Decl冒出来。而这一部分代码的阅读,我会推荐当你想要了解某一部分的实现时再去挑着读,而非挨着挨着读。而若你如我一样,需要直接面对LLVMIR,那么你更多需要的是学习LLVMIRLanguage,即LLVMLanguageReferenceManual,但是我知道直接看这样的文档是抽象的,是无趣的,我也如此。那么其实最好的办法就是从C/C++程序dump出.ll文件,然后阅读它,修改它,看看会发生什么。同时,在这个阶段,你需要更多的有关链接器,ObjectFile,SymbolTable等知识,这样才能更好的做这件事情。而这阶段的代码,主要都是都在ClangCodeGen里面,所以你要阅读代码这部分是比较集中的,但是你要完整理清楚,你还是不可避免的需要从Driver等部分开始,但是你若是只想知道IR,大部分在CodeGen,Clang的源码大多是CG****。若你是做LLVM后端的话,这部分我了解的比较少,但是LLVM最好的地方就是它文档还算好,如我立马就找到了一个相关的东西:WritinganLLVMBackend然后空明大神补了一个:TheLLVMTarget-IndependentCodeGenerator。