多文件编译

文章详细介绍了GCC的编译步骤,包括预处理、编译、汇编和链接,并阐述了工程目录结构,特别是MakeFile在管理源文件和头文件中的作用。同时,讨论了头文件的条件编译避免重复定义,以及make作为工程管理工具的使用方法和makefile的编写规则,包括变量的定义与使用。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值