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

  • 相关阅读:
    java+selenium 3.x的火狐自动化测试环境
    Jmeter+badboy环境搭建
    Linux环境下搭建Tomcat+mysql+jdk环境
    线程池的配置说明
    关于事务的使用规范
    生产事故 java.lang.OutOfMemoryError: GC overhead limit exceeded
    linux检查网络运行情况命令
    百万数据迁移的线程分组
    XML报文拼接 乱码
    创建数据源、连接数据库
  • 原文地址:https://www.cnblogs.com/feige1314/p/7203415.html
Copyright © 2011-2022 走看看