1、前置
(1)gcc编译流程
//第一步:预处理---将C源文件编译成C文件。头文件展开,注释去掉,宏替换掉,不做语法检查
gcc -E test.c -o test.i
//第二步:编译--将预处理之后C文件编译成汇编文件
gcc -S test.i -o test.s
//第三步:汇编---将汇编文件编译生成机器文件
gcc -c test.s -o test.o
//第四步:链接---将所有的机器文件共同参与链接,生成一个可执行文件
gcc *.o -o App
(2)工程目录:
MakeFile(文件)------分别执行src和obj下的makefile文件
include(目录)------所有头文件(.h文件)
bin(目录)------可执行文件
obj(目录)------存放makefile+若干.o文件
src(目录)------存放makefile+若干子文件(.c文件)
(3)vim -p(同时新建并打开多个文件)
(4)xa(所有文件保存并退出)
2、目录
工程目录:MakeFile;bin;include;obj;src;
MakeFile:顶级makefile;
bin:可执行文件;
include:头文件(.h文件);
obj:makefile,(.o文件);
src:makefile,各种.c文件
3、头文件的书写
条件编译:防止同一个头文件被重复定义。
格式:
#ifndef _TEST_H_
#define _TEST_H_
//宏定义
//结构体定义
//取别名
//全局变量的声明
//枚举类型的定义
//函数的声明(函数代码第一行+;)
//等......
#endif
引用格式:
#include "./stu.h"//(“”里为头文件所在地址/头文件名)
4、make
概念:工程管理工具,可以将很多个.c文件和.h文件进行统一管理。
使用:命令行输入:
make 目标名
makefile文件编写格式:
目标:依赖
命令表
#eg:
App:test.o
gcc test.o -o App
test.o:test.c
gcc -c -g -Wall test.c -o test.o
5、Make中的变量
5.1 自定义变量
格式
变量名:=值 #定义变量且赋初始值,变量名建议大写
5.2自动变量
$< #依赖中的第一个依赖
$^ #所有依赖
$@ #目标名
5.3 系统预定义变量
CC #编译器的名称,默认值是cc,可以自己赋值为gcc。eg:CC:=gcc
CFLAGS #编译器选项,无默认值,可以自己赋值。eg:CFLGAS:=-c -g -Wall
RM #表示删除,默认值为rm -f,可以自己赋值。eg:RM:=rm -rf
5.4 环境变量
export #添加一些指定的环境变量到整个系统环境中去
export 变量1 变量2 变量3