C/C++/数据结构和算法 - 平台无关,算法逻辑
UC/Win32/Android/iOS - 平台相关,系统调用
嵌入式/驱动程序/移植 - 硬件相关,硬件接口
Linux操作系统:
- 1) 遵循GNU/GPL
- 2) 开放性
- 3) 多用户
- 4) 多任务
- 5) 设备独立性
- 6) 丰富的网络功能
- 7) 可靠的系统安全
- 8) 良好的可移植性
GNU编译工具GCC
1. 支持多种编程语言
C、C++、Objective-C、Java、Fortran、Pascal、Ada
2. 支持多种平台
Unix、Linux、Windows
3. 构建(Build)过程
编辑 -> 预编译 -> 编译 -> 汇编 -> 链接
- 1) 编辑: vi hello.c -> hello.c
- 2) 预编译:gcc -E hello.c -o hello.i -> hello.i -+
- 3) 编译: gcc -S hello.i -> hello.s | GCC
- 4) 汇编: gcc -c hello.s -> hello.o | 工具链
- 5) 链接: gcc hello.o -o hello -> hello -+
文件后缀
.h - C语言源代码头文件
.c - 预处理前的C语言源代码文件
.i - 预处理后的C语言源代码文件
.s - 汇编语言文件
.o - 目标文件
.a - 静态库文件
.so - 共享库(动态库)文件
编译单个源程序
gcc [选项参数] 文件
-c - 只编译不链接
-o - 指定输出文件
-E - 预编译
-S - 产生汇编文件
-pedantic - 对不符合ANSI/ISO C语言标准的
扩展语法产生警告
-Wall - 产生尽可能多的警告。
范例:gcc -Wall wall.c
-Werror - 将警告作为错误处理。
范例:gcc -Werror werror.c
-x - 指定源代码的语言。
范例:gcc -x c++ cpp.c -lstdc++
-g - 生成调试信息
-O1/O2/O3 - 优化等级
编译多个源程序
gcc [选项参数] 文件1 文件2 …
头文件的作用是什么
- 1) 声明外部变量、函数和类。
- 2) 定义宏、类型别名和自定义类型。
- 3) 包含其它头文件。
- 4) 借助头文件卫士,防止因同一个头文件被多次包含,而引发重定义错。
包含头文件时需要注意的问题
- 1) gcc的-I选项
指