库的制作

2019-01-09  本文已影响5人  不合格码农

一、.静态库的制作

    1.命名规则

    (1)lib + 库的名字 + .a

    (2)libaytest.a

    2.制作步骤

    (1).生成对应的 .o 文件 *.c *.o -c

    (2).将生成的 .o文件打包 ar rcs + 静态库的名字(libMytest.a) + 生成的所有的 .o

    3.发布和使用静态库

    (1).发布静态库

    (2).头文件

eg:

gcc main.c -Iubclude -L lib -l MyCalc -o myapp

 -Iubclude :头文件的位置

-L lib:静态库的位置

-l MyCalc:指定静态库。

静态库的优点:

1.发布程序的时候,不需要提供对应的库。

2.加载库的速度快。

缺点:

1.库被打包到应用程序中,导致库的体积很大。

2.库发生了改变。需要重新编译程序。

二、共享库的制作

    1.命名规则

    (1). lib + 名字 + .so

    2.制作步骤

    (1).生成与位置无光的代码。(生成与位置无关的  .o,因为是动态库,所以位置不定。)

    eg: gcc  -fPIC  -c  *.c  -I../include

            gcc  -shared  libMyCalc.so  *.o  -Iinclude

    (2)将 .o 打包成共享库(动态库)

    3.发布和使用共享库

    4.解决程序执行时动态库无法被加载的问题。

    (1)放到系统的库目录中---不允许使用

    (2)临时测试

                环境变量:LD_LIBRARY_PATH, 将动态库的路径设置给改变量。

                 将设置的值,导入到系统环境变量中:export LD_LIBRARY_PATH

                 关闭终端,设置会失效。

    (3)不常使用的方法(永久设置):

                 在家目录的 .bashrc 文件 中加一句话: export LD_LIBRARY_PATH = 动态库目录的绝对路径。

                .bashrc 修改完成,需要重启终端。

    (4)

                1.需要找动态连接器的配置文件 ------   /etc/ld.so.conf

                2.动态库的路径写到配置文件中 -------  绝对路径

                3.更新  ----   sudo ldconfig  -v    

    5.优缺点:

        优点:

                1.执行程序体积小

                 2.动态库更新了,不需要重新编译,函数的接口不变。

        缺点:

                1.发布程序的时候,需要将动态库提供给用户。

                2.动态库没有被打包到应用程序中,加载速度相对较慢。

上一篇 下一篇

猜你喜欢

热点阅读