1.库的概念:库是一种可执行的二进制形式;

2.分类

  1》静态库

    ①、在程序编译时会被连接到目标代码中;

    ②、程序运行时不再需要该静态库;

    ③、体积较大;

  2》动态库/共享库

    ①、在程序编译时不会被连接到目标代码中,而是在程序运行时才被载入内存中;

    ②、在程序运行时需要动态库存在;

    ③、代码体积较小;

 

3.库的制作

  1》静态库的制作:

    ①、创建静态库的源代码:

            testlib.c

      int fun(int a){

         return a * a;

      }

    ②、将静态库的源代码编码成.O文件

      gcc -c -o testlib.a testlib.o

    ③、将.o文件制作成静态库

      ar  crs libtest.a libtest.o

    ④、测试静态库是否创建成功

       #include <stdio.h>

       #include "testlib.h"

       int main(void){

        int n;

        scanf("%d", &n);

        printf("%d\n", fun(n));

      }

       编译上面的代码:gcc -o main main.c -ltest -L.

        执行:./main

  2》动态库的制作:

    ①、创建动态库的源代码:

      testlib.c

      int fun(int a){

        return a*a;

      }

    ②、将动态库的源代码编程成.o文件:testlib.o

      gcc -fPIC -Wall -c testlib.c

    ③、将.o文件制作成动态库;libtest.so

      gcc -shared -fPIC -o libtest.so testlib.o

    ④、测试动态库libtest.a是否创建成功

      #include <stdio.h>

      #include "testlib.h"

      int main(void)

      {

        int n;

        scanf("%d", &n);

        printf("%d\n", fun(n));

      }

      ----->>编译上面的测试代码:gcc -o main main.c -ltest -L.

      ----->>装载动态库:

      ---------------------》》第一种方法:将动态库放入系统库目录下:

              sudo cp libtest.so  /lib

      ---------------------》》第二种方法:将动态库路径加入到库的配置文件:/etc/ld.so.conf.d/libc.conf

             ----》打开配置文件:sudo vi /etc/ld.so.conf.d/libc.conf

             ----》写入库路径:

             ----》使之生效:sudo ldconfig

      --------------------》》第三种方法:将动态库路径加入到环境变量中

             export LD_LIBRARY_PATH=动态库的路径

      --------------------》》执行:./main

C库的制作的更多相关文章

  1. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  2. Linux下C++静态库、动态库的制作与使用

    参考博文:C++静态库与动态库 >> 静态库 1. 静态库的制作 a) 编辑 name.cpp 和name.h文件 b) $g++ -c name.cpp //注意带参数-c,否则直接编译 ...

  3. iOS开发之静态库的制作

    当你需要和别人分享代码,但又不想让别人看到你内部的实现时就需要制作静态库,通常用于第三方SDK 下面就分享一下制作静态库(.a)的过程: 1.打开Xcode,新建workspace 2.随便给work ...

  4. Egret第三方库的制作和使用(模块化 第三方库)

    一.第三方库的制作 官方教程:第三方库的使用方法 水友帖子:新版本第三方库制作细节5.1.x 首先在任意需要创建第三方库的地方,右键,选择"在此处打开命令窗口" 输入egret c ...

  5. [置顶] linux学习之静态库和动态库的制作与使用

    linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example ...

  6. 静态库与动态库的制作以及程序的动态函数库解析ldd;ldconfig与/etc/ld.so.conf

    静态库的制作步骤: (1)gcc -c mylib.c -o mylib.o (2)ar rc libmylib.a mylib.o 动态库的制作步骤: gcc -shared mylib.c -o ...

  7. linux系统环境下的静态库和动态库的制作

    linux系统下的应用编程需要系统提供的库文件,包括静态库或动态库.不管是静态库还是动态库,都是编译好的二进制文件.在我们编译程序时要链接的目标文件,静态库是链接的时候直接编译到程序里,和程序成为一体 ...

  8. iOS静态库的制作与引用

    [iOS静态库的制作与引用] 1.Configuring Exported Headers To configure which headers are exported to clients, se ...

  9. iOS 静态库的制作

    按照公司的想法 要开发一款SDK,于是就抽空学习一下静态枯的制作过程. 在IOS中有静态库和动态库的区分,下面我们就来详细介绍一下. 一.静态库和动态库的详细介绍. 我们平时的工程中或多或少都要引入第 ...

  10. 动态库*.so制作

    转自:http://www.2cto.com/os/201308/238936.html 在linux下制作动态库*.so.   1.linux下动态库的制作 //so_test.h #include ...

随机推荐

  1. QMap QHash的选择(QString这种复杂的比较,哈希算法比map快很多)

    QMap QHash有近乎相同的功能.很多资料里面介绍过他们之间的区别了.但是都没有说明在使用中如何选择他们. 实际上他们除了存储顺序的差别外,只有key操作的区别. 哈希算法是将包含较多信息的“ke ...

  2. Consider using EXISTS instead of IN

    redgate给出的提示 https://documentation.red-gate.com/codeanalysis/performance-rules/pe019 In theory, EXIS ...

  3. [Swift通天遁地]三、手势与图表-(8)制作股市中常用的蜡烛图表

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. 绑定树tree 的后台方法

    #region 获取部门列表树集合         /// <summary>         /// 获取部门列表树集合         /// </summary>     ...

  5. MVC系列学习(二)-初步了解ORM框架-EF

    1.新建 一个控制台项目 2.添加一个数据项 a.选择数据库 注:数据库中的表如下: b.选择EF版本 c.选择表 3.初步了解EF框架 看到了多了一个以 edmx后缀的文件 在edmx文件上,右击打 ...

  6. Maven 学习(1)

    Maven是什么,以及为什么要使用Maven?Maven这个词可以翻译为“知识的积累”,也可以翻译为“专 家”或“内行”.(构建 = 编写源代码+编译源代码+单元测试+生成文档+打包War+部署)Ma ...

  7. java实现搜索附近地点或人的功能

    前言 当前大多数app都有查找附近的功能, 简单的有查找周围的运动场馆, 复杂的有滴滴, 摩拜查找周围的车辆. 本文主要阐述查找附近地点的一般实现. 方案比较 方案1 (性能还不错) 数据库直接存经纬 ...

  8. HDU_1023_Train Problem II_卡特兰数

    Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. CDR X8图框精确剪裁在哪?

    对于CorelDRAW,刚从低版本升级为高版本的同学可能一下子理不清方向,因为在CorelDRAW X8中有很多功能命令做了整改和位置的变化.很多用户反映,CDR中的图框精确剪裁不见了,然而并不是该命 ...

  10. CAD从二制流数据中加载图形(com接口VB语言)

    主要用到函数说明: _DMxDrawX::ReadBinStream 从二制流数据中加载图形,详细说明如下: 参数 说明 VARIANT varBinArray 二制流数据,是个byte数组 BSTR ...