gcc makefile文件的编写
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Makefile
Makefile带来的好处就是--“自动化编 带来的好处就是--“ 带来的好处就是-- 一旦写好,就只需一个make命令就可 译”,一旦写好,就只需一个 命令就可 以实现整个工程完全自动化编译, 以实现整个工程完全自动化编译,极大的提 高了软件开发的效率。 高了软件开发的效率。 有效文件名: 有效文件名:
gcc规则 规则
gcc通过后缀来区别输入文件的类别,gcc所 通过后缀来区别输入文件的类别, 通过后缀来区别输入文件的类别 所 遵循的部分约定规则如下: 遵循的部分约定规则如下:
.c为后缀的文件,C语言源代码文件; 为后缀的文件, 语言源代码文件 语言源代码文件; 为后缀的文件 .a为后缀的文件,是由目标文件构成的档案库文 为后缀的文件, 为后缀的文件 件; .cc或.cxx 为后缀的文件,是C++源代码文件; 为后缀的文件, 源代码文件; 或 源代码文件 .h为后缀的文件,是程序所包含的头文件; 为后缀的文件, 为后缀的文件 是程序所包含的头文件; .o为后缀的文件,是编译后的目标文件; 为后缀的文件, 为后缀的文件 是编译后的目标文件; .s为后缀的文件,是汇编语言源代码文件; 为后缀的文件, 为后缀的文件 是汇编语言源代码文件;
简化makefile(2) 简化
利用内部变量进行简化 objects = main.o subr.o exec = prog all:$(objects) gcc –o $@ $^ clean: rm –r $(exec) $(objects)
$@ 扩展成当前规则的目的文件名, 扩展成当前规则的目的文件名, $< 扩展成依靠列表中的第 一个依靠文件 $^ 扩展成整个依靠的列表
Vi编辑器和 编辑器和GCC 编辑器和 开发工具
vi(m)编辑器 编辑器
vi是Linux/UNIX世界里极为普遍的全屏幕 是 / 世界里极为普遍的全屏幕 文本编辑器,几乎任何一台Linux/UNIX机 文本编辑器,几乎任何一台 / 机 器都会提供这个软件。 器都会提供这个软件。这种编辑器的一大好 处是所有的命令按键都在手指范围内,手不 处是所有的命令按键都在手指范围内, 必离开主键盘就可输入所有命令。 必离开主键盘就可输入所有命令。 $vi filename 新建文档或开启旧文档。 新建文档或开启旧文档。 vi有3种状态,即可视命令模式、冒号命令模 种状态, 有 种状态 即可视命令模式、 式及文本编辑模式。 式及文本编辑模式。
vi的编辑状态 的编辑状态
可视命令模式:一般当进入 时 可视命令模式:一般当进入vi时,会首先进 入可视命令方式,这是Vi的启动默认模式 的启动默认模式。 入可视命令方式,这是 的启动默认模式。 冒号命令方式:所有命令都要以“ 开始, 冒号命令方式:所有命令都要以“:”开始, 所输入的字符系统均作命令来处理, 所输入的字符系统均作命令来处理, 如输入 “:q”代表退出,“:w”表示存盘。 代表退出, 表示存盘。 代表退出 表示存盘 文本编辑模式:在可视命令模式下,输入” 文本编辑模式:在可视命令模式下,输入”i” 即可进入编辑模式,进行编写、 即可进入编辑模式,进行编写、修改代码等 操作。 操作。
常用的vim命令
编辑命令(可视模式下) 编辑命令(可视模式下)
dd—删除整行命令 删除整行命令 u—恢复前一次的删除动作 恢复前一次的删除动作
冒号命令方式命令 :q—退出命令 退出命令 :w—存档 存档 :wq—存档退出 存档退出 放弃任何改动, :q!--放弃任何改动,强行退出 ! 放弃任何改动
常用的vim命令 命令 常用的
光标命令:(可视模式下) 光标命令:(可视模式下) :(可视模式下 k、j、h、l—上下左右光标移动命令。 上下左右光标移动命令。 、 、 、 上下左右光标移动命令 nG—调转命令,n为行数,该命令使光标立即跳到指定的行数。 调转命令, 为行数 该命令使光标立即跳到指定的行数。 为行数, 调转命令 Ctrl+G—光标所在位置的行数和列数。 光标所在位置的行数和列数。 光标所在位置的行数和列数 编辑命令: 可视模式下) 编辑命令: (可视模式下) i—从可视命令模式进入文本编辑模式。 从可视命令模式进入文本编辑模式。 从可视命令模式进入文本编辑模式 esc键—放回到可视命令模式。 放回到可视命令模式。 键 放回到可视命令模式 查找命令: 可视模式下) 查找命令: (可视模式下) /string 、? 、?String—从光标所在的行向前向后查找相应的字符 从光标所在的行向前向后查找相应的字符 串。 拷贝复制命令: 可视模式下) 拷贝复制命令: (可视模式下) yy—拷贝一行到剪切板 拷贝一行到剪切板 p—粘贴剪切板的内容 粘贴剪切板的内容 在冒号命令方式下: ,表示从当前光标处开始复制n行内容到 在冒号命令方式下:yn,表示从当前光标处开始复制 行内容到 剪切板。将光标移到相应的位置, 即可粘贴剪切板的内容。 剪切板。将光标移到相应的位置,按p即可粘贴剪切板的内容。 即可粘贴剪切板的内容
习题
1 vi中拷贝一行文字并粘贴到另一位置用什 么命令? 2 vi中把某个字符串全程替换为另一个字符 串的命令是什么? 3 使用vi编辑器在目录里创建一个文本文件, 然后输入一段程序,并练习使用各种编 辑命令。
Biblioteka Baidu
GUNMakeFile、Makefile和makefile 、 和
实例分析
#The makefile is for test. objects = main.o subr.o exec = prog all:$(objects) gcc –o $(exec) $(objects) main.o:test1.c gcc –c main.c subr.o:test2.c gcc –c subr.c clean: rm –r $(exec) $(objects) 注意: 注意:
gcc 编译过程
预处理 这一步需要分析各种命令, 这一步需要分析各种命令,如:#define、 、 #include、#ifdef等。gcc将调用 将调用cpp程序来进 、 等 将调用 程序来进 行预处理。 行预处理。 编译 这一步将根据输入文件产生汇编语言, 这一步将根据输入文件产生汇编语言,由于通常 是立即调用汇编程序, 是立即调用汇编程序,所以其输出一般不保存在 文件中。 文件中。 汇编 这一步将汇编语言用作输入,产生具有.o扩展名 这一步将汇编语言用作输入,产生具有 扩展名 的目标文件。 的目标文件。 连接 在这一步,各目标文件.o被放在可执行文件的适 在这一步,各目标文件 被放在可执行文件的适 当位置上。 调用连接程序ld来完成最终的任 当位置上。gcc调用连接程序 来完成最终的任 调用连接程序 务。
gdb 的常用命令
list 显示源代码段。 显示源代码段。 run 运行程序。 运行程序。 break NUM 在指定的行上设置断点。 在指定的行上设置断点。 Watch express 参看变量或表达式的值。 参看变量或表达式的值。 continue 继续执行正在调试的程序。该命令用在程 继续执行正在调试的程序。 序由于处理信号或断点而导致停止运行时。 序由于处理信号或断点而导致停止运行时。 next 单步执行,但不进入函数。 单步执行,但不进入函数。 Step 单步执行,进入函数。 单步执行,进入函数。 info break 显示当前断点清单,包括到达断点处的 显示当前断点清单, 次数等。 次数等。 kill 终止正被调试的程序。 终止正被调试的程序。
蓝色的每行,必须从每行的起始处开始,不能有空格。 蓝色的每行,必须从每行的起始处开始,不能有空格。 红色标注的每行,起始处不是空格,是“Tab”键。 红色标注的每行,起始处不是空格, 键 注释均以’ 开始 注释均以’#’开始
简化makefile 简化
利用makefile的隐含规则简化 的隐含规则简化 利用 ######## objects = main.o subr.o exec = prog all:$(objects) gcc –o $(exec) $(objects) clean: rm –r $(exec) $(objects)
gcc编译器 编译器
Linux系统下的 系统下的Gcc(GNU C Compiler)是GNU 系统下的 ( ) 推出的功能强大、性能优越的多平台编译器, 推出的功能强大、性能优越的多平台编译器,是 GNU的代表作品之一。gcc是可以在多种硬体平 的代表作品之一。 的代表作品之一 是可以在多种硬体平 台上编译出可执行程序的超级编译器, 台上编译出可执行程序的超级编译器,其执行效 率与一般的编译器相比平均效率要高20%~30%。 率与一般的编译器相比平均效率要高 。 Gcc编译器能将 、C++语言源程序、汇编程序和 编译器能将C、 语言源程序、 编译器能将 语言源程序 目标程序编译、连接成可执行文件, 目标程序编译、连接成可执行文件,如果没有给 出可执行文件的名字, 将生成一个名为a.out 出可执行文件的名字,gcc将生成一个名为 将生成一个名为 的文件。在Linux系统中,可执行文件没有统一的 的文件。 系统中, 系统中 后缀, 后缀,系统从文件的属性来区分可执行文件和不 可执行文件。 可执行文件。
gcc 参数说明
-c 只编译并生成目标文件。 只编译并生成目标文件。 -o FILE 生成指定的输出文件 生成指定的输出文件FILE,没有指定 ,没有指定FILE, , 默认输出文件为a.out。 默认输出文件为 。 -O 优化生成代码。 优化生成代码。 -w 不生成任何警告信息。 不生成任何警告信息。 -Wall 生成所有警告信息。 生成所有警告信息。 -g 生成调试信息。GNU 调试器可利用该信息。 生成调试信息。 调试器可利用该信息。 -lLIBRARY 连接时搜索指定的函数库 连接时搜索指定的函数库LIBRARY。 。
gdb
Linux 包含了一个叫 包含了一个叫gdb 的GNU 调试程序 调试程序. gdb 是一个用来调试 和C++ 程序的强力调 是一个用来调试C 试器. 试器 它使你能在程序运行时观察程序的内部 结构和内存的使用情况. 功能非常强大: 结构和内存的使用情况 Gdb 功能非常强大
可监视程序中变量的值。 可监视程序中变量的值。 可设置断点以使程序在指定的代码行上停止执行。 可设置断点以使程序在指定的代码行上停止执行。 支持单步执行等
gcc用法
gcc最基本的用法是∶ 最基本的用法是∶ 最基本的用法是 gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames 就是编译器所需要的参数, 其中 就是编译器所需要的参数 给出相关的文件名称。 给出相关的文件名称。 举例: 举例: gcc –c main.c gcc –c subr.c gcc –I/usr/include –o prog main.o subr.o