Linux 内核实验

上传人:jiups****uk12 文档编号:56888745 上传时间:2018-10-16 格式:PPT 页数:64 大小:200KB
返回 下载 相关 举报
Linux 内核实验_第1页
第1页 / 共64页
Linux 内核实验_第2页
第2页 / 共64页
Linux 内核实验_第3页
第3页 / 共64页
Linux 内核实验_第4页
第4页 / 共64页
Linux 内核实验_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《Linux 内核实验》由会员分享,可在线阅读,更多相关《Linux 内核实验(64页珍藏版)》请在金锄头文库上搜索。

1、Linux 内核实验,周 戎,大纲,1 编程基础 2 Linux内核文件 3 实验,1.1编程基础,如何在Linux下面编译一个程序? 如何编译一个静态链接库? 如何安装驱动?,1.1我们的武器:编译器,Gcc,G+ GCC stands for “GNU Compiler Collection“. GCC is an integrated distribution of compilers for several major programming languages. Most of the compilers for languages other than C have their o

2、wn names. The C+ compiler is G+, the Ada compiler is GNAT, and so on. Gcov gcov is a test coverage program. Use it in concert with GCC to analyze your programs to help create more efficient, faster running code and to discover untested parts of your program.,1.2我们的Hello World,test.cc #include int ma

3、in() using namespace std; cout “Hello World” endl; return 0; ,G+ O2 test.ccgcc -E hello.c -o hello.i gcc -c hello.i -o hello.o gcc hello.o -o hello,1.3编译动态库,对应Windows的DLL技术 工具: Gcc 主程序 Main.c Linux下的调用,myfunc=dlopen(“./demo.so“,RTLD_LAZY); externfunction=dlsym(myfunc,“demoadd“); externfunction(10,5)

4、; dlclose(myfunc);,1.4编译,gcc -Wall -O2 -c -fPIC demo.c gcc -shared -o demo.so demo.o gcc Wall O2 -o app main.c -ldl,1.4注:Windows下面调用动态库,HMODULE LoadLibrary( LPCTSTR lpFileName ); FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName ); BOOL FreeLibrary( HMODULE hModule );,1.5为Linux安装设备驱动,查看设备类型

5、 From windows From Linux (lspci,lsusb) From OEM List ( Dell, Lenovo) 得到驱动源代码 Vendor Source (cdrom/ floopy) Website Linux forum 编译 Make 安装 Make install? Manual install,2.0 Linux内核,我们为什么要编译内核? 内核版本 内核结构 各部分解释 开始编译,2.1 我们为什么要编译内核,现在的版本存在bug 需要添加新的设备 提交Linux运行性能 玩?,2.2 内核版本,Linux内核版本 2.4 2是内核主版本,4代表是稳定版

6、本 uname -r Cat /etc/redhat-release,2.3 内核结构,1.代码成熟等级 2处理器类型和特色 3.对模块的支持 4.基本的选择 5.即插即用支持 6.块设备支持 7.网络选项 8.电话支持 9.SCSI设备的支持 10.I2O接口适配器,2.3 内核结构,11.网络设备支持 12.配置业余无线广播 13.红外支持 14.ISDN的文件系统 15.旧型光驱类型(非IDE界面的光驱) 16.字符设备 17.USB支持 18.文件系统 19.控制台驱动 20.声卡驱动 21.Kernel hacking,2.4 编译配置,#make config(基于文本的最为传统的

7、配置界面,不推荐使用) #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用) #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用) #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦),2.4 编译配置,选择相应的配置时,有三种选择,它们分别代表的含义如下:Y-将该功能编译进内核-不将该功能编译进内核M-将该功能编译成可以在需要时动态插入到内核中的模块,2.4 .1 编译配置-代码成熟等级,1Code maturity level options代码成熟等级 此处只有一项:prompt for d

8、evelopment and/or incomplete code/drivers,如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。 在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其他人去测试这些driver并提出一些bugs。这个问题是说,有一些drive还在做测试中,问您是否要选择这些drive或支持的程序码。如果键入Y,往后将会出现一些还在测试中的东西给您做选择。(像Java的程序码和PCI bridge),台则就键入N。,2.4.2 编译

9、配置-处理器类型和特性,2. Processor type and features处理器类型和特色 #Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC,PPro/6x86MX) PPro/6x86MX -选择处理器类型,缺省为Ppro/6x86MX。它会对每种CPU做最佳化,让它跑得快又好。一般来说,没有选择正确的CPU并不会有重大的影响(特别是选择386 ,这样编译出来的核心也许会比较小但它的速度可能就会变慢了)。所以,最好要知道您的CPU是哪一种。不过,如果您的gCC编译器是2.7.0版以前的。那么只能选

10、择386或是486。,2.4.2 编译配置-处理器类型和特性,#Math emulation-这项询问是否需L1nux核心模拟数学浮点运算器。如果有486Dx、AMD以及Pentium机器的话,这个选项就不必选了,因为它们都有内建的浮点运算器。协处理器是在386时代的宠儿,现在早已不用了。不过,对于有内建浮点运算器的人来说,选了这个选项并不会因此让内建的浮点运算器失效。但它会增大核心约45KB。#MTTR (memory type range register)support-选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。同时用来启动pentinum

11、 pro和pentinumII 的特殊功能,如果你用的不是这类CPU就选N,否则也仅仅是使内核变大而已。#Symmetric multi-processing support-对称多处理支持。除非有多个CPU,否则就不用选了。,2.4.3 编译配置-模块的支持,Loadable module support对模块的支持. #Set version information on all module symbols-通常,我们更新核心版本之后,模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。可以不选它。但如果您选y,则按照它的说明,您必须有genksyms这个程序(可用wher

12、eis指令查看有无此程序)。#Kernel module loader-让内核在启动时有自己装入必需模块的能力,建议选上。 注意:在开机就会 mount 上来的 partition 的 FS 、device driver 记得要 compiler 进 kernel,不能把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。,2.4.4 编译配置基本配置,4. General setup基本配置 这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项: #Networking support-网

13、络支持。因为在Linux里面,有虚拟的网络设备(1ookback),可以模拟整个网络。而且,些程序需要它。必须,没有网卡也建议你选上。注意:选N,则7.(Networking options 网络选项)和11.(Network device support网络设备支持) 不会出现。,2.4.4 编译配置基本配置,#PCI support -PCI支持。如果使用了PCI的卡,当然必选。 #Support for hot-pluggabel devices -热插拔设备支持。 #PCMCIA/CardBus support-PCMCIA/ CardBus支持。有PCMCIA就必选了。 #PCI b

14、ridge optimization (experimental) -在某些支持BIOS上,它能让存取速度加快,建议是选Y。,2.4.4 编译配置基本配置,#Backward-compatible /proc/pci-设备兼容,自己看help。 #System V IPC 如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是一个让各个程序(process)同步且能彼此交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。 #Sysctl support-除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。,

15、2.4.4 编译配置基本配置,#Kernel support for A.OUT binaries -aout的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上。Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代aout格式的可执行码。 #Kernel support for Linux/Intel ELF binaries -由上所述,这个当然y哩,因为目前gcc2.7.0以上的都有支持ELF了,如果没有选择这一项,可能会使用相当多的程序因此无法执行。,2.4.5 编译配置即插即用

16、支持,Plug and Play configuration即插即用支持 Linux对即插即用目前支持的不如Windows,好有些情况下会和其他设备产生冲突(I/O,DMA,IRQ等)。这个选项对PCI设备没有影响,因为他们天生就是PNP设备。 # ISA Plug and Play support - 选择“y”,内核将自动配置基于ISA总线的即插即用设备。,6. Block devices块设备支持 #use old disk-only driver on primary interface-通常是选择N。因为我们有其他新的drivers可用。 #Include IDEATAPI CDROM support-如果希望核心支持IDEATAPI接口的光驱,选择Y。,2.4.6 编译配置块设备支持,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号