欢迎来到天天文库
浏览记录
ID:48562964
大小:200.00 KB
页数:64页
时间:2020-01-23
《Linux 内核实验.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux内核实验周戎大纲1编程基础2Linux内核文件3实验1.1编程基础如何在Linux下面编译一个程序?如何编译一个静态链接库?如何安装驱动?1.1我们的武器:编译器Gcc,G++GCCstandsfor"GNUCompilerCollection".GCCisanintegrateddistributionofcompilersforseveralmajorprogramminglanguages.MostofthecompilersforlanguagesotherthanChavetheirownnames.TheC++compilerisG++,theAdac
2、ompilerisGNAT,andsoon.Gcovgcovisatestcoverageprogram.UseitinconcertwithGCCtoanalyzeyourprogramstohelpcreatemoreefficient,fasterrunningcodeandtodiscoveruntestedpartsofyourprogram.1.2我们的HelloWorldtest.cc#includeintmain(){usingnamespacestd;cout<<“HelloWorld”<3、t.ccgcc-Ehello.c-ohello.igcc-chello.i-ohello.ogcchello.o-ohello1.3编译动态库对应Windows的DLL技术工具:Gcc主程序Main.cLinux下的调用myfunc=dlopen("./demo.so",RTLD_LAZY);externfunction=dlsym(myfunc,"demoadd");externfunction(10,5);dlclose(myfunc);1.4编译gcc-Wall-O2-c-fPICdemo.cgcc-shared-odemo.sodemo.ogcc–Wall–O2-o4、appmain.c-ldl1.4注:Windows下面调用动态库HMODULELoadLibrary(LPCTSTRlpFileName);FARPROCGetProcAddress(HMODULEhModule,LPCSTRlpProcName);BOOLFreeLibrary(HMODULEhModule);1.5为Linux安装设备驱动查看设备类型FromwindowsFromLinux(lspci,lsusb)FromOEMList(Dell,Lenovo)得到驱动源代码VendorSource(cdrom/floopy)WebsiteLinuxforum编译Mak5、e安装Makeinstall?Manualinstall2.0Linux内核我们为什么要编译内核?内核版本内核结构各部分解释开始编译2.1我们为什么要编译内核现在的版本存在bug需要添加新的设备提交Linux运行性能玩?2.2内核版本Linux内核版本2.42是内核主版本,4代表是稳定版本uname-rCat/etc/redhat-release2.3内核结构1.代码成熟等级2..处理器类型和特色3.对模块的支持4.基本的选择5.即插即用支持6.块设备支持7.网络选项8.电话支持9.SCSI设备的支持10.I2O接口适配器2.3内核结构11.网络设备支持12.配置业余无线广6、播13.红外支持14.ISDN的文件系统15.旧型光驱类型(非IDE界面的光驱)16.字符设备17.USB支持18.文件系统19.控制台驱动20.声卡驱动21.Kernelhacking2.4编译配置#makeconfig(基于文本的最为传统的配置界面,不推荐使用)#makemenuconfig(基于文本选单的配置界面,字符终端下推荐使用)#makexconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)#makeoldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)2.4编译配置选择相应的配置时,有三种选择,它们分别代表的含义如下7、:Y--将该功能编译进内核--不将该功能编译进内核M--将该功能编译成可以在需要时动态插入到内核中的模块2.4.1编译配置-代码成熟等级1.Codematurityleveloptions代码成熟等级此处只有一项:promptfordevelopmentand/orincompletecode/drivers,如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。但是有些drive
3、t.ccgcc-Ehello.c-ohello.igcc-chello.i-ohello.ogcchello.o-ohello1.3编译动态库对应Windows的DLL技术工具:Gcc主程序Main.cLinux下的调用myfunc=dlopen("./demo.so",RTLD_LAZY);externfunction=dlsym(myfunc,"demoadd");externfunction(10,5);dlclose(myfunc);1.4编译gcc-Wall-O2-c-fPICdemo.cgcc-shared-odemo.sodemo.ogcc–Wall–O2-o
4、appmain.c-ldl1.4注:Windows下面调用动态库HMODULELoadLibrary(LPCTSTRlpFileName);FARPROCGetProcAddress(HMODULEhModule,LPCSTRlpProcName);BOOLFreeLibrary(HMODULEhModule);1.5为Linux安装设备驱动查看设备类型FromwindowsFromLinux(lspci,lsusb)FromOEMList(Dell,Lenovo)得到驱动源代码VendorSource(cdrom/floopy)WebsiteLinuxforum编译Mak
5、e安装Makeinstall?Manualinstall2.0Linux内核我们为什么要编译内核?内核版本内核结构各部分解释开始编译2.1我们为什么要编译内核现在的版本存在bug需要添加新的设备提交Linux运行性能玩?2.2内核版本Linux内核版本2.42是内核主版本,4代表是稳定版本uname-rCat/etc/redhat-release2.3内核结构1.代码成熟等级2..处理器类型和特色3.对模块的支持4.基本的选择5.即插即用支持6.块设备支持7.网络选项8.电话支持9.SCSI设备的支持10.I2O接口适配器2.3内核结构11.网络设备支持12.配置业余无线广
6、播13.红外支持14.ISDN的文件系统15.旧型光驱类型(非IDE界面的光驱)16.字符设备17.USB支持18.文件系统19.控制台驱动20.声卡驱动21.Kernelhacking2.4编译配置#makeconfig(基于文本的最为传统的配置界面,不推荐使用)#makemenuconfig(基于文本选单的配置界面,字符终端下推荐使用)#makexconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)#makeoldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)2.4编译配置选择相应的配置时,有三种选择,它们分别代表的含义如下
7、:Y--将该功能编译进内核--不将该功能编译进内核M--将该功能编译成可以在需要时动态插入到内核中的模块2.4.1编译配置-代码成熟等级1.Codematurityleveloptions代码成熟等级此处只有一项:promptfordevelopmentand/orincompletecode/drivers,如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。但是有些drive
此文档下载收益归作者所有