Gcc 程序设计

本文介绍了GCC(GNU Compiler Collection)的程序设计工具,包括编辑器、编译器和调试器。详细讲解了GCC在Ubuntu上的安装,支持的文件类型,以及编译流程。讨论了GCC的使用选项,如-o指定输出文件,-c编译成汇编,-pedantic和-Wall等。此外,还阐述了多文件编译的模块化设计和时间统计。重点介绍了make工具的使用,包括Makefile规则和自动化编译过程,以及`make clean`用于清理中间文件。
摘要由CSDN通过智能技术生成

程序设计工具

编辑器:vi 或者其他。
编译器:gcc [GUN Compiler Collection]。
调试器:gdb。
自动连接编译:make。

安装gcc (基于Ubuntu)
sudo apt-get install gcc
sudo apt-get install build-essential //安装头文件和库文件。
-- version//显示gcc版本
gcc 支持的文件类型
  • .h 头文件
  • .c c源代码文件
  • .c .cpp c++源文件
  • .s 汇编语言
  • .o 目标代码文件
gcc 构建流程图

预处理-》编译-》汇编-》连接

gcc 用法
gcc  [参数] file 

不加参数,故默认生成可执行文件a.out 应为生成的文件在当前目录下,所以执行的时候

./a.out
  • -o 指定输出的文件名
gcc hello.c  -o hello

指定生成的可执行文件名为hello

故执行的时候

./hello
  • -c 编译成汇编,生成.o文件。
  • -o 优化
  • -pedantic 对不符合的ANSI c的特性提出警告。
  • -ansi 关闭gcc不兼容ANSI c的特性。
  • -Wall 启用所有警告。
gcc -Wall test.c
  • -lxx 连接动态函数库。
  • -
time
time ./filename //这里的filename 是你程序生成的可执行文件的文件名。
  • real 程序的总执行时间。
  • user 进程中用户指令的执行时间。
  • sys 进程中内核执行时间。
多文件编译

模块化设计

  1. 划分功能模块,一般一个模块对应一个子函数。
  2. 建立一个.h头文件包含宏定义、函数的申明。
  3. 每一个c文件对应一个子文件,在该文件中,需要导入自定义的头文件。
  4. 单独建立一个c文件,其中包含main函数,在该文件中,需要导入自定义的头文件。
  5. 调用gcc 对所有文件编译,生成执行文件。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

上述在编译的过程中都是执行生成的可执行文件,没有生成.o文件。

如果要删除编译期间的可执行文件,或者.o文件,请使用rm命令

make

该命令就是自动编译,上面多个文件编译,你可能会输入多个gcc 命令,而利用make,只需要定义一个Makefile文件,在编译的时候,输入一个make命令,即可得到一个可执行文件。

注意Makefile,这个文件名是固定的。

这里写图片描述

Makefile规则:

target:dependency1 dependency2
<tab> command //执行命令每一行前面必须要用tab键,一个命令占一行。

target是指:目标文件。就是command生成的文件,可以是可执行文件,或者是.o文件。

dependency:就是你依赖的程序文件。

  • 第一个make命令实现了编译链接的自动化,如果源文件没有错误,就会生成最终的可执行程序。当某一个源文件出现错误,make命令停止执行,然后根据提示信息,修改错误,再次执行make命令,反复循环直至生成可执行文件。
  • make clean命令调用了脚本文件中的rm -f *.o命令,删除了中间.o文件
make 变量
变量名=字符串//等号两边没有空格
$(变量名)//调用变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值