LINUX复习
1.可执行文件和脚本文件
脚本文件:脚本文件是一组指令集,这些指令将由另一个程序来执行。
2.PATH环境变量:
/bin:二进制文件目录,存放系统启用时用到的程序
/usr/bin:用户二进制文件目录,存放用户使用的标准程序
/usr/local/bin:本地二进制文件目录,存放软件安装程序
/sbin /usr/sbin:存放系统管理程序的目录
3.GCC四个步骤
1.预处理:
gcc -E -o hello.i hello.c
-E 可以使编译器在预处理阶段结束时就停止编译
2.编译
gcc -S -o hello.s hello.i
-S 能使编译器在汇编之前就停止
3.汇编
gcc -c -o hello.o hello.s
-c 用户可看到汇编代码转化为 .o 的二进制目标代码。
4.链接
gcc -o hello hello.o
生成可执行文件hello
4.头文件和库文件
1.头文件:头文件提供对常量的定义和对系统函数及库函数调用的声明。
调用C编译器时,可使用 -I 标志来包含保存在子目录或非标准位置中的头文件。
gcc -I /usr/openwin/include fred.c
一般位于/usr/include目录
2.库文件:
1.库是一组预先编译好的函数集合。按照可重用原则编写。
一般位于/lib和/usr/lib目录
2.库文件的名字以lib开头,随后指明这是什么库。文件名最后部分以.开始,然后给出库文件的类型
.a 代表传统的静态函数库
.so 代表共享函数库
3.静态库
函数库最简单的形式是一组处于“准备好使用” 状态的目标文件。
当程序需要使用函数库中的某个函数时,它包含一个声明该函数的头文件。
编译器和链接器负责将程序代码和函数库结合在一起组成一个单独的可执行文件。
静态库,归档文件(archive),以.a结尾。
可用ar命令创建和维护自己的静态库。
4.共享库
静态库缺点:
当同时运行许多应用程序并且它们都使用来自同一个函数库的函数时,
内存中就会有同一函数的多份副本,而且在程序文件自身中也有多份同样的副本,
这将消耗大量宝贵的内存和磁盘空间。
共享库的保存位置和静态库一样,但共享库有不同的文件名后缀。
5.共享库连接方式
1.程序本身不再包含函数代码,而是引用运行时可访问的共享代码。
2.当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存中。
3.通过这种方法,系统可以只保留共享库的一份副本供许多应用程序同时使用,
并且在磁盘上也仅保存一份。另一个好处是共享库的更新可以独立于依赖它的应用程序。
3.获取帮助的四种方式:--help man info help