uc笔记01---Unix,Linux,程序构建过程,gcc,头文件,预处理,环境变量配置

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 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值