1. Unix 操作系统
1)简介
美国 AT&T 公司贝尔实验室,
1971 年,
肯.汤普逊、丹尼斯.里奇。
多用户、多任务、支持多种处理器架构。
高安全性、高可靠性,高稳定性。
既可构建大型关键业务系统的商业服务器应用,
也可构建面向移动终端、手持设备等的嵌入式应用。
2)三大派生版本
a. System V
AIX: IBM,银行
Solaris: SUN->Oracle,电信
HP-UX
IRIX
b. Berkley
FreeBSD
NetBSD
OpenBSD
Mac OS X
c. Hybrid
Minix: 迷你版的类 Unix 操作系统。
Linux: GPL,免费开源,商用服务器(RedHat)、
桌面(Ubuntu)、嵌入式(Android)。
操作系统的基本分类:
实时,分时和批处理;
3. Linux 操作系统
1)简介
类 Unix 操作系统,免费开源。
不同发行版本使用相同内核。
手机、平板电脑、路由器、视频游戏控制台、台式计算机、
大型计算机、超级计算机。
严格意义上的 Linux 仅指操作系统内核。
隶属于 GNU 工程。
发明人 Linus Torvalds。
2)相关知识
a. Minix 操作系统
荷兰阿姆斯特丹 Vrije 大学,
数学与计算机科学系,
Andrew S. Tanenbaum,
ACM 和 IEEE 的资深会员。
b. GNU 工程
Richard Stallman 发起于1984年,
由自由软件基金会 (FSF) 提供支持。
GNU 的基本原则就是共享,
其主旨在于发展一个有别于一切商业 Unix 系统的,
免费且完整的类 Unix 系统——-GNU Not Unix。
3)POSIX 标准
Portable Operating System Interface for Computing Systems,
统一的系统编程接口规范。
由 IEEE 和 ISO/IEC 开发。
保证应用程序源代码级的可移植性。
Linux 完全遵循 POSIX 标准。
4)GPL 通用公共许可证
允许对某成果及其派生成果的重用、修改和复制,
对所有人都是自由的,但不能声明做了原始工作,或声明由他人所做。
5)版本
早期版本:0.01, 0.02, . . . , 0.99, 1.0
旧计划:介于 1.0 和 2.6 之间,A.B.C
A: 主版本号,内核大幅更新。
B: 次版本号,内核重大修改,奇数测试版,偶数稳定版。
C: 补丁序号,内核轻微修订。
2003 年 12 月发布 2.6.0 以后:缩短发布周期,A.B.C-D.E
D: 构建次数,反映极微小的更新。
E: 描述信息。
rc/r - 候选版本,其后的数字表示第几个候选版本,
越大越接近正式版本
smp - 对称多处理器
pp - Red Hat Linux 的测试版本
EL - Red Hat Linux 的企业版本
mm - 测试新技术或新功能
fc - Red Hat Linux 的 Fedora Core 版本
用 cat /proc/version 命令查看系统版本信息:
# cat /proc/version
Linux version 3.6.11-4.fc16.i686
# cat /proc/version
Linux version 3.2.0-39-generic-pae
6)特点
遵循 GNU/GPL
开放性
多用户
多任务
设备独立性
丰富的网络功能
可靠的系统安全
良好的可移植性
7)发行版本
大众的 Ubuntu
优雅的 Linux Mint
锐意的 Fedora
华丽的 openSUSE
自由的 Debian
简洁的 Slackware
老牌的 RedHat
4. 构建过程 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 ---+
5. GNU 编译工具 GCC
支持多种编程语言
C、C++、Objective-C、Java、Fortran、Pascal、Ada
支持多种平台
Unix、Linux、Windows
编译多个源程序
gcc [选项参数] 文件 1 文件 2 . . .
gcc [选项参数] 文件
-c - 只编译不链接
-o - 指定输出文件
-E - 预编译
-S - 产生汇编文件
-pedantic - 对不符合ANSI/ISO C语言标准的
扩展语法产生警告
-Wall - 产生尽可能多的警告。 // Waring all
范例:gcc -Wall wall.c
-Werror - 将警告作为错误处理。 // Waring error
范例:gcc -Werror werror.c
-x - 指定源代码的语言。
范例:gcc -x c++ cpp.c -lstdc++
-g - 生成调试信息
-O1/O2/O3 - 优化等级 // O1 最低,O3 最高;注意:是英文 o,不是零;
文件后缀
.h - C 语言源代码头文件
.c - 预处理前的 C 语言源代码文件
.i - 预处理后的 C 语言源代码文件
.s - 汇编语言文件
.o - 目标文件
.a - 静态库文件(后面讲)
.so - 共享库(动态库)文件(后面讲)
可以用 nm 命令产看目标文件:
nm hello.o
000000 T mian // T 代码区
U put
1)简介
美国 AT&T 公司贝尔实验室,
1971 年,
肯.汤普逊、丹尼斯.里奇。
多用户、多任务、支持多种处理器架构。
高安全性、高可靠性,高稳定性。
既可构建大型关键业务系统的商业服务器应用,
也可构建面向移动终端、手持设备等的嵌入式应用。
2)三大派生版本
a. System V
AIX: IBM,银行
Solaris: SUN->Oracle,电信
HP-UX
IRIX
b. Berkley
FreeBSD
NetBSD
OpenBSD
Mac OS X
c. Hybrid
Minix: 迷你版的类 Unix 操作系统。
Linux: GPL,免费开源,商用服务器(RedHat)、
桌面(Ubuntu)、嵌入式(Android)。
操作系统的基本分类:
实时,分时和批处理;
3. Linux 操作系统
1)简介
类 Unix 操作系统,免费开源。
不同发行版本使用相同内核。
手机、平板电脑、路由器、视频游戏控制台、台式计算机、
大型计算机、超级计算机。
严格意义上的 Linux 仅指操作系统内核。
隶属于 GNU 工程。
发明人 Linus Torvalds。
2)相关知识
a. Minix 操作系统
荷兰阿姆斯特丹 Vrije 大学,
数学与计算机科学系,
Andrew S. Tanenbaum,
ACM 和 IEEE 的资深会员。
b. GNU 工程
Richard Stallman 发起于1984年,
由自由软件基金会 (FSF) 提供支持。
GNU 的基本原则就是共享,
其主旨在于发展一个有别于一切商业 Unix 系统的,
免费且完整的类 Unix 系统——-GNU Not Unix。
3)POSIX 标准
Portable Operating System Interface for Computing Systems,
统一的系统编程接口规范。
由 IEEE 和 ISO/IEC 开发。
保证应用程序源代码级的可移植性。
Linux 完全遵循 POSIX 标准。
4)GPL 通用公共许可证
允许对某成果及其派生成果的重用、修改和复制,
对所有人都是自由的,但不能声明做了原始工作,或声明由他人所做。
5)版本
早期版本:0.01, 0.02, . . . , 0.99, 1.0
旧计划:介于 1.0 和 2.6 之间,A.B.C
A: 主版本号,内核大幅更新。
B: 次版本号,内核重大修改,奇数测试版,偶数稳定版。
C: 补丁序号,内核轻微修订。
2003 年 12 月发布 2.6.0 以后:缩短发布周期,A.B.C-D.E
D: 构建次数,反映极微小的更新。
E: 描述信息。
rc/r - 候选版本,其后的数字表示第几个候选版本,
越大越接近正式版本
smp - 对称多处理器
pp - Red Hat Linux 的测试版本
EL - Red Hat Linux 的企业版本
mm - 测试新技术或新功能
fc - Red Hat Linux 的 Fedora Core 版本
用 cat /proc/version 命令查看系统版本信息:
# cat /proc/version
Linux version 3.6.11-4.fc16.i686
# cat /proc/version
Linux version 3.2.0-39-generic-pae
6)特点
遵循 GNU/GPL
开放性
多用户
多任务
设备独立性
丰富的网络功能
可靠的系统安全
良好的可移植性
7)发行版本
大众的 Ubuntu
优雅的 Linux Mint
锐意的 Fedora
华丽的 openSUSE
自由的 Debian
简洁的 Slackware
老牌的 RedHat
4. 构建过程 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 ---+
5. GNU 编译工具 GCC
支持多种编程语言
C、C++、Objective-C、Java、Fortran、Pascal、Ada
支持多种平台
Unix、Linux、Windows
编译多个源程序
gcc [选项参数] 文件 1 文件 2 . . .
gcc [选项参数] 文件
-c - 只编译不链接
-o - 指定输出文件
-E - 预编译
-S - 产生汇编文件
-pedantic - 对不符合ANSI/ISO C语言标准的
扩展语法产生警告
-Wall - 产生尽可能多的警告。 // Waring all
范例:gcc -Wall wall.c
-Werror - 将警告作为错误处理。 // Waring error
范例:gcc -Werror werror.c
-x - 指定源代码的语言。
范例:gcc -x c++ cpp.c -lstdc++
-g - 生成调试信息
-O1/O2/O3 - 优化等级 // O1 最低,O3 最高;注意:是英文 o,不是零;
文件后缀
.h - C 语言源代码头文件
.c - 预处理前的 C 语言源代码文件
.i - 预处理后的 C 语言源代码文件
.s - 汇编语言文件
.o - 目标文件
.a - 静态库文件(后面讲)
.so - 共享库(动态库)文件(后面讲)
可以用 nm 命令产看目标文件:
nm hello.o
000000 T mian // T 代码区
U put