Linux(六)
自定义头文件
自定义头文件中写什么
//1.引入库头文件
//2.宏定义
//3.数据类型的定义
//4.枚举类型的定义
//5.函数声明
如何引入头文件
#include <stdio.h> // <> 表示从系统库路径开始引入头文件 (引入库头文件)
#include "stu.h" //"" 表示从当前工作目录引入头文件 (引入自定义头文件)
条件编译
#ifndef 标号(一般和头文件同名)
#define 标号
//1.引入库头文件
//2.宏定义
//3.数据类型定义
//4.枚举定义
//5.函数声明
#endif
条件编译作用
避免头文件被重复引入
#ifndef _STU_H
#define _STU_H
//1.引入库头文件
//2.宏定义
//3.数据类型定义
//4.枚举定义
//5.函数声明
//1.引入库头文件
#include <stdlib.h>
//2.宏定义
#define N 5
#define M 20
//3.数据类型定义
//1.定义一个结构体数据类型,并取别名
typedef struct student
{
char name[M];
int height;
}Stu;
//4.枚举定义
//5.函数声明
void menu(void);
void input(Stu * ps,int size);
void output(Stu * ps,int size);
Stu * calpMax(Stu *ps,int size);
Stu * calpMin(Stu *ps,int size);
void swap(Stu * pMax,Stu * pMin);
void sortByHeight(Stu * ps,int size);
#endif
gcc工作原理
Make 工作管理器
什么是Make
Make是一个工具程序,它是一种转换文件形式的工具,转换的目标称为叫target.
在许多现代软件的开发中,集成开发环境已经取代了Make,但是在Unix环境中,仍然有许多任务工程师采用Make来协助软件开发.从事嵌入式系统开发,如果不能驾驭Makefile,那很难做到游刃有余。
什么是Makefile/makefile
Makefile假目标
Makefile中的变量
自定义变量
预定义变量
Makefile中预定义变量包含了常见编译器,汇编器的名称及其编译选项
CC :C编译器的名称,默认值为cc
自动变量
$^ 规则中的所有选择条件(所有依赖文件)
$< 规则中的第一个先决条件(第一个依赖文件)
$@ 目标文件
Makefile中变量展开方式
递归展开方式
简单展开方式
嵌套的Makefile
CC:=gcc
SUBDIRS:= f1 f2 main obj
OBJS:=f1.o f2.o main.o
BIN:=myapp
OBJS_DIR:=obj
BIN_DIR:=bin
export CC OBJS BIN OBJS_DIR BIN_DIR
all: CHECK_DIR $(SUBDIRS)
CHECK_DIR:
mkdir -p $(BIN_DIR)
$(SUBDIRS):ECHO
make -C $@
ECHO:
@echo $(SUBDIRS)
@echo begin compile
CLEAN:
$(RM) $(OBJS_DIR)/*.o
rm -rf $(BIN_DIR)