Linux系统编程巩固--01

学习Linux系统编程主要包括学习一下内容:开发环境、内存管理、文件系统、进程管理、信号处理、进程通信、线程管理、线程同步和网络编程。

一.Unix操作系统

1.美国AT&T,贝尔实验室

1971年
多用户,多任务,多处理器
商用

2.三个派系

1.system V
IBM AIX ....

2.berkley

freeBSD
metBSD
openBSD
Max OS X

3.Linux

免费开源,商用服务器(RedHat),桌面(Ubuntu),嵌入式(Android)

二.linux操作系统

1.类Unix操作系统,免费开源

标志:企鹅

2.POSIX标准

IEEE和ISO制定
统一的系统编程接口规范
可移植

3.GPL

通用的公共许可证
允许对某些成果及其派生成果的重用,修改和复制,对所有人都是自由的,但是不能声明做了原始工作

4.版本

1)早期版本:0.01,0.02....1.0
2)旧计划:1.0-----2.6  A.B.C
A:主版本号,内核大幅度更新
B:次版本号,内核重大修改,奇数测试版,偶数稳定版
C:补丁序号,内核轻微修订
3)2003.12发布2.6.0以后,发布周期缩短A.B.C-D.E
www.kernel.org
D:构建次数,反应极其微小的更新
E:描述信息
rc/r:候选版本,后面的数字表示第几个候选版本,越大,越接近正式版

5.主流的linux发行版本

Ubuntu----大众化
Fedora----RedHat的桌面版,应用丰富
Debian----开放,自由,免费
RedHat----经典,应用丰富

三.GNU编译工具---GCC

1.支持多种语言

C,C++,Obeject-C,java,ADA.....

2.支持多种平台

Unix Linux windows

3.构建过程

编辑--->预编译--->编译---->汇编---->链接
1)编辑 vi hello.c
2)预编译 gcc -E hello.c -o hello.i
3)编译 gcc -S hello.i
4)汇编 gcc -c hello.s
5)链接 gcc hello.o -o hello

4.gcc版本

gcc -v

5.文件后缀

.hC语言源代码的头文件
.c 预处理前的C语言源代码文件
.i 预处理后的C语言源代码文件
.s 汇编语言文件
.o 目标文件
.a 静态库文件
.so 动态库(共享库)文件

6.编译单个源程序

gcc [编译参数] 文件
-c:编译+汇编
-o:指定输出文件路径
-E:预处理
-S:编译,产生汇编文件
-g:生成调试信息
-Wall:产生尽可能多的警告
-Werror:将警告作为错误
-O0/O1/O2/O3:优化等级,缺省是O1,O0不做优化,某些操作系统还支持Os,相当于O2.5

7.编译多个源程序

先把每个源程序编译成目标文件,再将所有的目标文件连接成可执行程序
gcc [选项参数] a.c b.c c.c d.c
makefile/make

8.预处理指令

#define PAI 3.14
#undef PAI
#error 产生错误,结束并终止预编译过程
#warning 产生警告,并不终止预编译过程
#line 指定行号
#pragma 为处理器提供额外信息
#pragma pack(1/2/4/8)//对结构体变量,按1/2/4/8字节对齐/补齐
#pragma GCC dependency <文件>//如果<文件>比当前文件新,产生警告
#pragma GCC poison <标识>//如果文件中出现<标识>,直接报错

9.预定义宏

宏义宏(已经定义好了的宏)
__LINE__ //所在行号
__BASE_FILE__ //正在被编译的源文件名
__FILE__ //所在的文件名
__FUNCTION__ //所在函数名
__func__ //同__FUNCTION__
__DATE__ //编译日期
__TIME__ //编译时间

10.环境变量

C_INCLUDE_PATH
CPATH
C头文件的附加搜索路径
LIBRARY_PATH
链接时库文件的搜索路径
LD_LIBRARY_PATH
运行时库文件的搜索路径  

你可能感兴趣的:(Linux系统编程)