Linux - 概述
一、UNIX、Linux、GNU、Linux发行版
UNIX是由Open Group管理的一个商标,它指的是一种遵循特定规范的计算机操作系统。许多类UNIX系统都是具有商业性质的,如IBM的AIX、HP的HP-UX和Sun的Solaris。还有一些可以免费获得,如FreeBSD和Linux。
Linux是一个可以自由发布的类UNIX内核实现,它是一个操作系统的底层核心。
GNU软件(应用程序):UNIX系统上应用程序的仿制品。
Linux发行版:不仅包含内核,还包含许多其他的编程工具和应用程序(GNU软件),如Red Hat、Ubuntu、Debian...
一、什么是库
我们通常把一些公用函数制作成函数库,供其它程序使用。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。
二、静态函数库、动态函数库
A. 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进可执行文件了。当然这也会称为它的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译,而且体积也较大。
B.这类库德名字一般是libxxx.so,动态库又称共享库;相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。而且如果多个应用程序都要使用同一函数库,动态库就非常适合,可以减少应用程序的体积。
注意:不管是静态函数库还是动态函数库,都是由*.o目标文件生成。
.o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件
.a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件
.so 是shared object,用于动态连接的,和windows的dll差不多,使用时才载入。
.a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件
.so 是shared object,用于动态连接的,和windows的dll差不多,使用时才载入。
三、程序编辑、编译和链接
编辑:类似于文本编辑,将程序代码输入进去,可以修改,增加,删除;
编译:将程序代码按一定规则变换成机器可以识别的二进制序列;
链接:将编译的代码序列与必须的启动代码,用到的库文件按规则组合链接成可执行文件
.c只是简单的文本文件
.o是编译之后的二进制文件
.exe是经过编辑--编译--链接产生的可执行文件
编译、链接、运行程序:
1 $ gcc -o hello hello.c //如果省略-o name选项告诉编译器可执行程序的名字,编译器就会把程序放在a.out文件中 2 $./hello //./hello表示执行当前目录下给定名称的程序 3 Hello World 4 $
$ gcc -c bill.c //-c选项阻止编译器创造一个完整的程序
四、linux cd命令切换目录命令用法详解
~ 也表示为 home directory 的意思,. 则是表示目前所在的目录,.. 则表示目前目录位置的上一层目录。
1 cd /usr/bin //跳到/usr/bin 文件夹 2 cd ~ //跳到home文件夹 3 cd ../.. //跳到当前目录的上上层 4 cd - //返回进入当前目录前所在的目录 5 6 pwd //查询当前所在目录名称

浙公网安备 33010602011771号