Linux程序设计笔记 第一章

  1. 严格来说,UNIX是由OpenGroup(开放组织)管理的一个商标,它指的是一种遵循特定规范的计算机操作系统。这个规范也成为单一UNIX规范(TheSingle UNIXSpecitication),它定义了所有必须的UNIX操作系统函数名称、接口和行为。这个规范在很大程度上是早起由IEEE开发的P1003POSIX规范的超集。

  2. Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件。可执行文件是计算机可以直接运行的程序。脚本文件是一组指令的集合,这些指令将由另一个程序(即解释器)来执行,它们相当于Windows中的.bat文件、.cmd文件或解释执行的BASIC程序。

  3. 如果PATH变量中包含的其中一个目录包含另一个与你需要执行的程序同名的程序,shell就会执行那个程序。如果PATH中这样的目录出现在你需要执行的程序所在的目录之前,这种情况也会发生。为了避免这种潜在的问题,你可以在程序名前加上一个./”。它特别只是shell去执行当前目录下给定名称的程序。

  4. shell会在一组指定的目录路径下按照你给出的程序名搜索与之同名的文件。搜索的目录路径存储在shell变量PATH

  5. PATH通常包含如下一些存储系统程序的标准路径

/bin 二进制文件目录,用于存放启动系统时用到的程序

/ust/bin 用户二进制文件目,用于存放用户使用的标准程序

/usr/local/bin 本地二进制文件目录,用于存放软件安装的程序

LinuxUNIX都使用冒号(:)分隔PATH变量里的条目,且Linux使用正斜线(/)分隔文件名里的目录名

  1. C语言来说,头文件几乎总是位于/usr/include目录及其子目录中。那些依赖于特定Linux版本的头文件通常可在目录/usr/include/sys/usr/include/linux中找到

  2. grep命令可搜索包含某些特定定义和函数原型的头文件。例如grepEXIT_ *.h 会在当前目录下所有以.h结尾的文件中搜索包含了EXIT_开头的定义

  3. 库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。标准系统库文件一般存储在/lib/ust/lib目录中。库文件的名字总是以lib开头,随后的部分指明这是什么库。文件名的最后部分以.开始,然后给出库文件的类型

.a 代表传统的静态函数库

.so 代表共享函数库

  1. 函数库:最简单的形式是一组处于装备好使用状态的目标文件。当程序需要使用函数库中的某个函数时,它包含一个声明该函数的头文件。编译器和链接器负责将程序代码和函数库结合在一起以组成一个单独的可执行文件。

  2. 静态库:也称为归档文件,文件名以.a结尾。可以使用ar程序和gcc–c命令对函数分别进行编译。详细参看课本P27

  3. 共享库:共享库保存位置与静态库一样,但共享库又不同的文件名后缀。当一个程序使用共享库时,它的链接方式是这样的:程序本身不再包含函数代码,而是引用运行时可访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存中。通过这种方法,系统可以只保留共享库的一份副本供许多应用程序同时使用,并且在磁盘上也仅保存一份。另一个好处是共享库的更新可以独立于依赖它的应用程序。

  4. 共享库在许多方面类似于Windows中使用的动态链接库。.so库对应于.dll文件,它们都是在程序运行时加载,而.a库类似于.lib文件,它们都包含在可执行程序中。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值