首先我们得知道什么是库呢?它在linux操作系统得哪个位置呢?

(为保证排版整齐,一些不太相关的知识点放在末尾进行补充)

一、什么是库?

1、库是一种加密的二进制文件

2、需要被操作系统载入内存运行

3、相比于可执行文件,它不可以直接运行

4、windows和linux都有自己的库,,但是不兼容

5、linux的库有两种,静态库和动态库

二、在linux操作系统中库存放在哪里呢?

1、库的头文件存放在:/usr/include

2、库存放在:/lib

三、如何识别静态库与动态库?

1、静态库 :*.a

2、动态库:*.so

四、使用时静态库与动态库的区别 ? 

1、静态库:

编译: gcc    man.c    -L路径    -lxxx 

            -L : 指定库所在的目录

            -l : 指定库的名字 (xxx部分)

运行:./a.out

优点:a.out运行时候不需要外部库,运行速度相对较快;发布程序无需提供静态库,移植方便。

缺点:每个a.out都要包含库,体积较大,运行时浪费内存资源;库的更新需要编译项目文件,对程序的更新、部署、发布带来麻烦。

2、动态库:

编译:gcc   main.c   -L路径   -lxxx

          -L : 指定库所在的目录

          -l : 指定库的名字 (xxx部分)

运行:通过以下的方法进行配置后,直接运行   ./a.out

           法1:将动态库拷贝到 /lib 中(上提到的存放库的位置)

           法2:export LD_LIBRARY_PATH = .   (不要因为这个点小就忽略哦!!)

                    或  so 所有的路径,这种方式只对当前终端有效,另外开的其他中断无效。

           法3:步骤1:pwd     查出当前路径

                    步骤2:cd   /etc/ld.so.conf.d    跳转路径

                    步骤3:ls       查看当前路径

                    步骤4:sudo   vi   my.cof    使用超级用户权限打开文件

                    步骤5:添加步骤1得到的路径到文件中

                    步骤6:sudo  ldconfig     使更改的文件生效

优点:动态库编译后体积较小;动态库的改变不影响程序,更新相对比较方便。

缺点:程序运行时必须提供相应的库,缺少相应的库就无法运行程序,发布时必须提供相应的库。

拓展:

1、 i386通常作为对Intel32位处理器得统称。

2、ldd 用于查看可执行程序依赖的动态库有哪些

     例如:ldd a.out    查看a.out依赖的以.so结尾的动态库

                ldd /bin/ls   查看  ls   依赖的以.so结尾的动态库

3、pwd查看当前路径的绝对路径