02第02章Linux下C语言开发工具.ppt

上传人:sccc 文档编号:5999623 上传时间:2023-09-13 格式:PPT 页数:37 大小:377.52KB
返回 下载 相关 举报
02第02章Linux下C语言开发工具.ppt_第1页
第1页 / 共37页
02第02章Linux下C语言开发工具.ppt_第2页
第2页 / 共37页
02第02章Linux下C语言开发工具.ppt_第3页
第3页 / 共37页
02第02章Linux下C语言开发工具.ppt_第4页
第4页 / 共37页
02第02章Linux下C语言开发工具.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《02第02章Linux下C语言开发工具.ppt》由会员分享,可在线阅读,更多相关《02第02章Linux下C语言开发工具.ppt(37页珍藏版)》请在三一办公上搜索。

1、Linux高级程序设计(第二版),人民邮电出版社出版杨宗德编著2009年9月,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,Make工具与Makefile文件,4,常用调试工具,5,Linux库文件使用与创建,6,Autoconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,3,VIM编辑器,2023/9/13,人民邮电出版社出版杨宗德编著,4,配置文件,VIM的配置文件为“/.vimrc”cp/usr/share/vim/vim61/vimrc_example/.vimrc添加内容到配置文件/.vimrc中,2023/9/13,

2、人民邮电出版社出版杨宗德编著,5,Source Insight工具,Source Insight是一个图形化的源代码查看工具(当然也可以做为编辑工具),如果一个项目的源代码较多,此工具可以很方便的查找出源代码之间的依赖关系,例如,某一个宏的定义位置,某一个自定义的数据类型的原始定义。应用编程所用的头文件(主要位于/usr/include目录下)下载到Windows平台,从而建立各文件间的关联,以便查找各函数声明,变量类型。,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,Make工具与Makefile文件,4,常用调试工具,5,Linux库文件使用与创建,6,Aut

3、oconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,7,编译C到可执行文件过程,(1)预处理(也称预编译,Preprocessing):命令GCC首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含、预编译语句进行分析,使用-E参数。(2)编译(Compilation):调用cc进行编译,这个阶段根据输入文件生成以.s为后缀的汇编文件,使用-s参数。(3)汇编(Assembly):汇编过程是针对汇编语言的步骤,调用as进行工作,将.S和.s为后缀的汇编语言文件经过预编译和汇编成以.o为后缀的目标文件,使用-c参数。(4)连接(Linking)

4、:当所有的目标文件都生成之后,调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排到可执行程序中恰当的位置上,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方,使用-o参数。,2023/9/13,人民邮电出版社出版杨宗德编著,8,不同后缀所标识的程序语言及处理,2023/9/13,人民邮电出版社出版杨宗德编著,9,其它常用选项,-o output_filename:把文件输出到output_filename,这个名称不能和源文件同名。如果不给文件名,GCC就将文件输出到a.out。-g:产生符号调试工具(GNU的Gdb)所必要的标准调试信息,要想对

5、源代码进行调试,就必须加入这个选项。-O:对程序进行优化编译、连接。采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样可以提高可执行文件的执行效率,但是,编译、连接的速度就相应地要慢一些。-O2:比-O的优化级别更高,能更好的优化编译、连接。但整个编译、连接过程会更长。-I dirname:在头文件的搜索路径列表中添加dirname目录,是在预编译过程中使用的选项。-L dirname:在库文件的搜索路径列表中添加dirname目录。,2023/9/13,人民邮电出版社出版杨宗德编著,10,头文件搜索路径,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,

6、Make工具与Makefile文件,4,常用调试工具,5,Linux库文件使用与创建,6,Autoconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,12,Makefile优点,利用Make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序而言,使用make工具和makefile文件可以清晰地理顺各个源文件之间的关系。,2023/9/13,人民邮电出版社出版杨宗德编著,13,Makefile示例,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,Make工具与Makefile文件,4,常用调试

7、工具,5,Linux库文件使用与创建,6,Autoconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,15,GDB调试工具,完成如下的调试任务:(1)设置断点。(2)监视程序变量的值。(3)程序的单步执行。(4)修改变量的值。,2023/9/13,人民邮电出版社出版杨宗德编著,16,GDB可用命令,2023/9/13,人民邮电出版社出版杨宗德编著,17,GDB示例,见教材。,2023/9/13,人民邮电出版社出版杨宗德编著,18,strace,strace用来跟踪一个进程的系统调用或信号产生的情况,而ltrace用来跟踪进程调用库函数的情况。常用的三个命令行

8、参数:-f:除了跟踪当前进程外,还跟踪其子进程。-o file:将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。-p pid:绑定到一个由pid对应的正在运行的进程。此参数常用来调试后台进程。,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,Make工具与Makefile文件,4,常用调试工具,5,Linux库文件使用与创建,6,Autoconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,20,Linux库文件管理方式,静态库。在Linux中,以.a为后缀,如libtest.a。应用程序从静态库中直接拷贝函

9、数到二进制映像文件。共享库,在Linux操作系统中,以libxxx.so.x.x为格式命名。可执行文件在运行时将函数代码从共享库文件中读出,从而间接引用。,2023/9/13,人民邮电出版社出版杨宗德编著,21,库函数基本路径,/lib:系统必备共享库/usr/lib:标准共享库和静态库/usr/local/lib:本地函数库,2023/9/13,人民邮电出版社出版杨宗德编著,22,库文件搜索顺序,(1)首先在“LD_LIBRARY_PATH”环境变量所设置的路径下查找(一般都没有给此环境变量赋值);(2)搜索动态装载器在/etc目录下的缓存文件/etc/ld.so.cache(此文件由命令l

10、dconfig创建更新)。(在Redhat 9中,直接由/etc/ld.so.conf文件配置)。因此,如果要使用自己创建的共享库文件(静态库直接在编译时指定即可),则需要将共享库拷贝到想要搜索路径下或者指定该库的具体路径。,2023/9/13,人民邮电出版社出版杨宗德编著,23,ldd命令-查看到某可执行程序库清单,2023/9/13,人民邮电出版社出版杨宗德编著,24,创建静态库,源文件信息。其中,“libhello.c”为要构建的库文件源文件,“libhello.h”为调用此库文件的头文件,“usehello.c”为测试程序。生成目标文件 使用ar命令创建静态库,2023/9/13,人民

11、邮电出版社出版杨宗德编著,25,使用静态库,头文件 和库文件信息,2023/9/13,人民邮电出版社出版杨宗德编著,26,使用此库文件,应用示例 编译 运行,2023/9/13,人民邮电出版社出版杨宗德编著,27,共享库创建,2023/9/13,人民邮电出版社出版杨宗德编著,28,共享库创建示例,查看源文件,“libhello.c”为要构建的库文件源文件,“libhello.h”为调用此库文件的头文件,“usehello.c”为测试程序。,2023/9/13,人民邮电出版社出版杨宗德编著,29,构建共享库目标文件,2023/9/13,人民邮电出版社出版杨宗德编著,30,编译共享库并创建连接,2

12、023/9/13,人民邮电出版社出版杨宗德编著,31,使用共享库,准备文件头文件libhello.h:以知道有哪些函数,完成怎么样的功能,返回值以及参数情况。库文件libhello.so.1.0及其链接libhello.so:库函数的二进制代码位置,2023/9/13,人民邮电出版社出版杨宗德编著,32,文件内容,2023/9/13,人民邮电出版社出版杨宗德编著,33,编译连接,2023/9/13,人民邮电出版社出版杨宗德编著,34,运行,如果希望在使用连接器时不使用-Ldirectory标识就可以查找到该库,则可以采用以下方式之一:把此库拷贝到/usr/lib或者/lib文件夹中,或者在此两

13、个文件夹任意一个中创建一个到该库的快捷方式,并命名为libname.so。如果库所在路径没有在/usr/lib和/lib文件夹下,需要将该路径添加到文件“/etc/ld.so.conf”中,每一行增加一个路径,完成以上设置后,然后运行ldconfig命令更新库信息。,第2章Linux下C语言开发工具,1,2,常用编辑工具,GCC编译工具,3,Make工具与Makefile文件,4,常用调试工具,5,Linux库文件使用与创建,6,Autoconf/Automake自动化工具,2023/9/13,人民邮电出版社出版杨宗德编著,36,自动创建Makefile文件流程,2023/9/13,人民邮电出版社出版杨宗德编著,37,示例,见教材。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号