第开云 开云体育平台6章 常用开发工具
-O1(或-O)、-O2、-O3分别代表优化级别,数 字越高,代表gcc的优化级别越高,高的优化级别 代表着程序将运行的更快。 优化级别越高则程序量越大。 直接优化程序本身,性能的提高的变化更加明显。
gcc可以针对支持不同的源程序文件进行不同 的处理,文件格式以文件的后缀来识别。
1、预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊 符号进行处理的过程。
2、编译(Compilation) 编译就是将源程序转换为计算机可以执行的二进 制代码。 说明:
显示变量的值的变化; 设置断点,使程序在指定的代码行上暂停执行, 便于观察; 单步执行代码;
选项 -L dir -l name 说明 将dir所指出的目录加到“函数库搜索列表”中 连接时,加载名字为name的函数库。该库位 于系统预设的目录或者由-L选项确定的目录下。 实际的库名是libname(后缀为.a或.so)
源代码转换为汇编语言(在编译时选择-S选项, 可以看到生成的汇编代码.s文件) 汇编代码(.s)转换为目标代码(.o) 将目标代码与各库函数进行链接并重定位。生成 可执行程序。
选项 -D name -I dir 说明 定义一个宏name,并可以指定值 指定头文件的路径dir。先在指定的路径中搜索要 包含的头文件,若找不到,则在标准路径 (/usr/include,/usr/lib及当前工作目录)上搜索。 只对文件进行预处理,不进行编译、汇编、链接, 生成的结果送标准输出 将输出写到指定的文件file中
-L:指定了链接时用到的库文件所在的目录。 -lxxx:指示链接的库函数名为libxxx.a
next命令:执行下一条源代码,但是不进入函数 内部。 step命令:执行下一条源代码,进入函数内部。 continue命令:程序从当前位置开始,执行到断 点处,或者直到程序结束。
quit命令:退出gdb。(简写为q) set命令:修改变量的值 shell命令:进入shell环境,执行shell命令
方法二不产生中间目标文件,直接生成一个可执行 文件,因而,程序内容稍有改动,就要重新编译全 部程序。
优化是编译器的一部分,它可以检查开云体育 kaiyun.com 官网入口和组合编译 器生成的代码,指出未达到最优的部分,并重新 生成它们,从而使用户编写的程序更加完美且节 省空间。 在gcc编译器选项中,使用-O选项对代码进行优化。 优化级别分3级,由高到低分别为:-O3、-O2、O1,
directory命令 :增加源文件的搜索路径。 show directories:显示定义的源文件的搜索路 径。 cd命令:设定工作目录。 pwd命令:显示工作目录。 path命令:设定查找目标文件的搜索路径 show paths命令:显示查找目标文件的搜索路径
汇编的过程实际上是将汇编语言代码翻译成机器语 言的过程。 产生一个扩展名为.o的目标文件。 目标代码不能直接执行,要想将目标代码变成可执 行程序,还需要进行链接操作。才会生成真正可以 开云体育 kaiyun.com 官网入口执行的可执行程序。 链接操作最重要的步骤就是将函数库中相应的代码 组合到目标文件中。
Linux系统中包含了GNU 调试程序gdb,它是一 个用来调试C和 C 程序的调试器。可以使程序 开发者在程序运行时观察程序的内部结构和内存 的使用情况。
在Linux平台上最常用的C语言编译系统是gcc, 它是GNU项目中符合ANSI C标准的编译系统。 gcc的使用格式:
在Linux下,目标文件的缺省后缀为.o 编译程序将通过词法分析和语法分析,将其翻译成 为等价的汇编代码。 在使用gcc进行编译时,缺省情况下,不输出这个汇 编代码的文件。如果需要,可以在编译时指定-S选 项。这样,就会输出同名的汇编语言文件。
例子:创建一个小型库,包含两个函数pro1、pro2, 然后在示例程序中调用其中一个函数。
标准库文件一般存储在/lib和/usr/lib目录中。 所有的库名都以lib开头。例如:libc.so(标准C语 言函数库)、libm.so(数学运算函数库) 以.a结尾的是静态库;以.so结尾的库是动态库。 使用ar工具将目标文件收集起来,放到一个归档文 件中。
只把源文件编译成目标代码.o,不进行汇编、链接, 用于实现对源文件的分别编译 在目标代码中加入供调试程序gdb使用的附加信息 显示gcc版本 显示警告信息
格式 list list list 说明 没有参数,显示当前行上、下的10行 显示当前行之前的10行 显示当前行之后的10行 显示从start到end行的代码开云体育 开云官网开云体育 开云官网
扫一扫关注微信公众帐号