Linux系统编程巩固--01
来源:互联网 发布:淘宝店铺一心 编辑:程序博客网 时间:2024/06/09 21:06
学习Linux系统编程主要包括学习一下内容:开发环境、内存管理、文件系统、进程管理、信号处理、进程通信、线程管理、线程同步和网络编程。
一.Unix操作系统
1.美国AT&T,贝尔实验室
1971年多用户,多任务,多处理器
商用
2.三个派系
1.system VIBM AIX ....
metBSD
openBSD
Max OS X
2.berkley
freeBSDmetBSD
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.02)旧计划: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 windows3.构建过程
编辑--->预编译--->编译---->汇编---->链接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 -v5.文件后缀
.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_PATHCPATH
C头文件的附加搜索路径
LIBRARY_PATH
链接时库文件的搜索路径
LD_LIBRARY_PATH
运行时库文件的搜索路径
0 0
- Linux系统编程巩固--01
- Linux系统编程巩固--02
- Linux系统编程巩固--03
- Linux系统编程巩固--04
- 网络编程基础知识巩固
- Linux系统编程学习01
- 在编程中巩固所有
- 巩固C++(二)----多线程编程
- 网络编程知识巩固(二)
- Linux系统编程---socket编程
- [Linux系统编程]Curses编程
- linux系统编程--系统调用
- Linux系统多线程编程
- Linux 系统编程
- unix/linux系统编程
- Linux系统编程概略
- Linux系统编程
- Linux系统编程学习心得
- 搜索引擎中下拉框的采集方法
- MJExtension
- 使用MVP模式重构代码
- set方法返回非void
- ios10的适配问题
- Linux系统编程巩固--01
- Android Service(一) Service初识
- 产品折扣分析
- Backbone.js 0.9.2 源码分析收藏
- druid配置
- 什么是工程师文化?
- 公司内网(私网)通过公网作代理连接出去,实现远程登录
- 2016-10-17面试基础知识小则(1)
- 0901 Java中的final关键字