1. 课程简介
1.1 课程阶段简介
1.2 Unix/linux系统下的高级c编程
2. Unix/Linux系统简介
1.1 Unix系统简介
1.2 Linux 系统的简介
3. gcc的基本使用
2.1 基本概念
原名叫做GNU C Compiler(GNU C 编程语言编译器),只是用于编译C语言,后来做一些扩展,
支持C++\OC等语言的编译,因此改名为: GNU Compiler Collection(GNU 编译器套件/集合)
2.2 基本功能
gcc xxx.c主要包括以下4个部分功能
(1)预处理:主要实现对头文件的包含以及宏替换
(2) 编译:主要将高级语言转换成汇编语言
(3)汇编:主要将汇编语言翻译成机器指令,得到目标文件
(4) 链接:主要将目标文件和库文件进行链接,生成可执行文件
2.3 常见的编译选项
(1)掌握的选项
-E 进行预处理,预处理默认输出到控制台, 使用gcc -E xxx.c -o xxx.i 将预处理结果定位到xxx.i文件中
预处理之后的文件主要包含:头文件\类型的别名\各种函数的声明
-S 进行编译处理,生成汇编文件xxx.s
-c 进行汇编处理,生成目标文件xxx.o
gcc/cc xxx.o -链接处理,生成可执行文件a.out
如:
gcc/cc -E xxx.c -o xxx.i
=>预处理生成.i文件
gcc/cc -S xxx.i/xxx.c
=>编译,生成.S文件
gcc/cc -c xxx.s/xxx.i/xxx.c
=>汇编,生成.O文件
gcc/cc xxx.o/xxx.s/xxx.i/xxx.c
=>链接,生成a.out 文件
(2)熟悉的选项
-std 用于指定编译遵守的标准
-Wall 主要用于尽可能产生警告
-Weror 主要将警告当做错误进行处理
(3)了解的选项
-v -g -o -x
(4)扩展的选项
man
(5)常见的文件后缀
.h 头文件
.c 源文件
.i 预处理之后的文件
.s 汇编文件
.0 目标文件
.a 静态库文件
.so 共享库文件
3.多文件结构的编程
.h 头文件,主要存放结构体的定义,函数的声明等等
.c 源文件,主要存放变量/函数的定义等等
.a 静态共享库,主要对功能代码的打包
.so共享库文件,主要对功能代码的打包
3.2 头文件的详细内容
(1) 头文件的卫士
#ifndef xxx_H
#define xxx_H
#endif
(2) 包含其他头文件
(3)宏定义
(4)数据类型的定义以及类型起别名
(5)变量/函数的声明
extren/*外部的*/ int num;
void show(void);
4. 预处理指令
4.1复习预处理指令
4.2 学习新的预处理指令
#line 整数n
#warning 字符串
# error 字符串
#pragma GCC dependency
#pragma GCC poison 标识符
#pragma pack(整数n) 表示按n的真数倍进行对齐补齐
4.3 预定义宏