Gcc 程序设计

程序设计工具

编辑器: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 变量
变量名=字符串//等号两边没有空格
$(变量名)//调用变量

猜你喜欢

转载自blog.csdn.net/venus321/article/details/80627533
gcc
今日推荐