程序设计工具
编辑器: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 进程中内核执行时间。
多文件编译
模块化设计
- 划分功能模块,一般一个模块对应一个子函数。
- 建立一个.h头文件包含宏定义、函数的申明。
- 每一个c文件对应一个子文件,在该文件中,需要导入自定义的头文件。
- 单独建立一个c文件,其中包含main函数,在该文件中,需要导入自定义的头文件。
- 调用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 变量
变量名=字符串//等号两边没有空格
$(变量名)//调用变量