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

  • 相关阅读:
    Hibernate 系列教程13-继承-鉴别器与内连接相结合
    Hibernate 系列教程12-继承-Join策略
    Hibernate 系列教程11-继承-Single Table策略
    Hibernate 系列教程10-组成关系
    Hibernate 系列教程9-自关联
    Hibernate 系列教程8-复合主键
    Hibernate 系列教程7-双向一对一
    Hibernate 系列教程6-双向多对多
    Hibernate 系列教程5-双向多对一
    第三章:3.6 使用 Session
  • 原文地址:https://www.cnblogs.com/feige1314/p/7203415.html
Copyright © 2011-2022 走看看