zoukankan      html  css  js  c++  java
  • C库的制作

    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 ", 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 ", 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

  • 相关阅读:
    phpcms V9 联动菜单的调用
    【转】雷军:扁平化管理 不打卡不设KPI
    【转】 Json转换利器Gson之实例五-注册TypeAdapter及处理Enum类型
    【转】Json转换利器Gson之实例四-实际开发中的特殊需求处理
    【转】 Json转换利器Gson之实例三-Map处理
    【转】 Json转换利器Gson之实例二-Gson注解和GsonBuilder
    【转】Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
    【转】工作分解结构在软件开发中的应用
    【转】 IT项目管理的三个条件、五个步骤
    【转】 项目组内个角色的职责说明
  • 原文地址:https://www.cnblogs.com/feige1314/p/7203415.html
Copyright © 2011-2022 走看看