导航:首页 > 源码编译 > 玩具编译器玩具内核

玩具编译器玩具内核

发布时间:2024-07-09 07:55:09

❶ 如何编译linux内核

内核配置完成,输入make命令即可开始编译内核。如果没有修改Makefile文件并指定ARCH和CROSS_COMPILE参数,则须在命令行中指定:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
目前大多数主机都是多核处理器,为了加快编译进度,可以开启多线程编译,在make的时候加上“-jN”即可,N的值为处理器核心数目的2倍。例如对于I7 4核处理器,可将N设置为8:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j8
采用多线程编译的优点是能加快编译进度,。具体可以参照ZLG《嵌入式Linux开发教程(下册)》第1章。

❷ 濡备綍涓嬭浇鍜岀紪璇戝反宸存墭鏂鍐呮牳锛

鎭ㄥ彲浠ュ湪缃戜笂镓惧埌瀹幂殑婧愪唬镰侊纴铹跺悗涓嬭浇骞剁紪璇戝畠銆备互涓嬫槸涓浜涗笅杞藉拰缂栬疟宸村反镓樻柉鍐呮牳镄勬ラわ细
镓揿紑娴忚埚櫒锛屾悳绱㈠反宸存墭鏂鍐呮牳婧愪唬镰侊纴骞舵垒鍒板畼鏂圭绣绔欐垨鍙淇$殑涓嬭浇婧愩
涓嬭浇宸村反镓樻柉鍐呮牳婧愪唬镰侊纴阃氩父鏄涓涓铡嬬缉鍖呫
瑙e帇缂╀笅杞界殑婧愪唬镰佸帇缂╁寘銆
镓揿紑缁堢鎴栧懡浠ゆ彁绀虹︼纴杩涘叆瑙e帇缂╁悗镄勬簮浠g爜鏂囦欢澶广
浣跨敤缂栬疟鍣ㄧ紪璇戞簮浠g爜銆傚反宸存墭鏂鍐呮牳阃氩父浣跨敤GCC缂栬疟鍣ㄨ繘琛岀紪璇戙傚湪缁堢鎴栧懡浠ゆ彁绀虹︿腑杈揿叆浠ヤ笅锻戒护𨱒ョ紪璇戜唬镰侊细makefilemake-j鍏朵腑锛鏄鎭ㄨ佷娇鐢ㄧ殑绾跨▼鏁帮纴鍙浠ユ牴鎹鎭ㄧ殑璁$畻链烘ц兘杩涜岃皟鏁淬
绛夊緟缂栬疟瀹屾垚銆傜紪璇戝彲鑳介渶瑕佷竴浜涙椂闂达纴鍏蜂綋鍙栧喅浜庢偍镄勮$畻链烘ц兘鍜屼娇鐢ㄧ殑绾跨▼鏁般
濡傛灉缂栬疟鎴愬姛锛屾偍灏嗗湪婧愪唬镰佹枃浠跺す涓镓惧埌缂栬疟钖庣殑鍐呮牳鏂囦欢锛堥氩父鏄痩inux鎴杤mlinuz锛夈
灏嗙紪璇戝悗镄勫唴镙告枃浠跺嶅埗鍒版偍闇瑕佷娇鐢ㄥ畠镄勬搷浣灭郴缁熶腑锛屽苟鎸夌収镎崭綔绯荤粺镄勮佹眰杩涜屽畨瑁呭拰閰岖疆銆
璇锋敞镒忥纴宸村反镓樻柉鍐呮牳鏄涓涓寮婧愰”鐩锛屽叾寮鍙戝拰缁存姢鐢辩ぞ鍖洪┍锷ㄣ傚洜姝わ纴鎭ㄥ彲鑳戒细阆囧埌涓浜涢梾棰樻垨阌栾锛岄渶瑕佽嚜宸卞皾璇曡В鍐虫垨瀵绘眰绀惧尯镄勫府锷┿

❸ 如何编译Linux内核

一、编译环境

ubuntu 5.10,要编译的内核源码版本2.6.12 二、下载并解压源代码 首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示: 解压该源码: 三、构建编译环境 现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示: 四、安装ncurses库 这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure 和make、make install方式安装。如下图所示: 五、配置内核 一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图: 在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:

在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:

在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:

由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。

把这几个驱动内部的选项全部改为[*]:

六、编译内核

对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。

七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块

安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/moles/内核版本号这个目录下,make moles_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。

2)、拷贝bzImage文件

bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。

3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12

4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:

5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。

❹ 操作系统内核和编译器哪个难度更大

二者都属于系统级的软件,难度相当,但还要看操作系统是否开源,如果没有开源,那难度就不是提升一点点了。

❺ 怎么用Visual Studio编译内核驱动

在Win8以前开发内核驱动,准备编译环境是个较繁琐的事情。程序员需要手动下载WDK并安装(注1),开发环境就在安装好的WDK中。WDK是Windows Driver Kit缩写,即Windows驱搏陵告动开发包。它提供的开发环境简陋得很,它不是一个便于开发的IDE环境,而仅仅是一些散装的编译工具包。

安装好WDK后,WDK的编译环境链接就显示在开始菜单中了,要小心不能将它们删掉,否则会麻烦,因为手动生成链接是麻烦事,后文会讲。
编译环境是分类的。首先根据目标系统分类,也就是要编译生成运行在什么OS上的目标文件。微软大部分的产品都保持了向后兼容的习惯,这条规律也适用于此处:使用Win7子系统环境编译出来的驱动文件,一般都能运行在Vista和XP系统上,反之就不会成立(注2)。
其次根据硬件平台分类,现在Windows系统能够运行的平台有四个:X86,X64,IA64和ARM。其中ARM是Win8才开始的故事,这里还轮不到它出场,这样就只有前面三个硬件平台(注3)。
最后又要根据编译版本来分,即Checked(也可认做Debug)和Free(也可认作Release)这两种。这样来看,每个OS组别下面,就一汪滚定有6个编译环境链接。
在这本书里面,如果用旧版本WDK编译驱动,就默认使用Win7目标系统的编译环境,生成Checked版本,目标平台是X86或X64。所以就只会选两种:X86 Checked Build Environment和X64 Checked Build Environment.
编译环境打开来其实就是个控制台。它当然不同于直接从cmd.exe运行起来的控制台环境,区别在哪里呢?我们已经知道,上图的这些黑色的编译环境图标,其实都是快捷方式。不妨就看看它的快捷方式的Target内容,或许就知道端倪了。以X64 Checked Build Environment这个环境为例,打开来看到如下内容:
C:\Windows\System32\cmd.exe /k C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7
这一行内容仔细一看就很简单了。原来所谓的编译环境,就是一个运行cmd.exe的控制台进程,只不过它执行了用于初始化的/k参数。在Cmd.exe命令的帮助中,/k参数是这样描述的:Carries out the command specified by string but remains(执行一个命令,执行完之后不退出程序)。也就是说,启动控制台进程并执行命令,执行完后,控制台程序留给用户继续使用。
那么/k之后的所有内容,都是一条初始化的命令:
C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7
它却又可拆成几个部分来分析。第一个setenv.bat是初始化编译环境的批文件。后面的是它的参数:第一个参数,是WDK的路径,通过它可以找到编译器程序;第二个参数是指明要编译生成checked版本目标文件;第三个指明硬件平台是x64;第三个指明目标系统是Win7。
位于WDK中的Setenv.bat文件是负责编译环境配置的总厨,你把什么参数递给它,它就给你配出什么类型的编译环境来(菜也)。
怎么在这个控制台里面编译驱动呢?我们统一用使用以下步骤:

通过CD命令,定位到含有source文件的那个驱动目录;
输入build或bld(build –cz的简写)命令进行编译;
如果编译成功,将生成驱动文件,否则会有错误或警告信息显示出来;也可通过查看目录文件夹下面的相关log文件查看详细的错误或警告信息。

走到这里,基明编译的事情算弄明白了。可能还会有朋友问我,我用什么东西写代码呢?不好意思,关于这个问题,此时还没有康庄大道供大家驷马高车,不过千万条小路却是现成的。您可以用notepad记事本或者任何文本编辑器来编辑代码,如果不嫌麻烦,用Visual Studio写代码也可以,只不过仅作代码编辑而已。

❻ 硬件与内核的关系,或者说 硬件与编译器的关系

INT的数据存放与别的类型数据存放没有不同(数据长短会区别)
真正的不同是在调用该段数据时所进行的处理(编译时就已经决定了)
也许可以尝试下一个数据和指向它的指针用不同数据类型调用会有何不同
(由于本人长期使用的是汇编,上面只是猜想而已)

阅读全文

与玩具编译器玩具内核相关的资料

热点内容
php基础书籍推荐 浏览:773
服务器与外网不通如何验证 浏览:349
电子版是不是就是文件夹 浏览:48
游戏属性文件加密 浏览:460
如何让安卓手机桌面图标下移 浏览:526
ubuntuphp5环境搭建 浏览:99
赌瘾解压视频 浏览:917
晋城移动dns服务器地址 浏览:294
php开源文库系统 浏览:134
android记事本源码 浏览:405
安卓11小游戏怎么玩法 浏览:188
gif有损压缩 浏览:935
windows下安装linux命令操作 浏览:842
米家app怎么设置进门亮灯 浏览:652
任我行服务器为什么会影响截图 浏览:296
安卓留言板怎么删除 浏览:18
做大厂程序员有什么感受 浏览:242
php文件只读 浏览:775
红色警戒3命令修改器112 浏览:433
安卓税收和苹果税是什么意思 浏览:446