zoukankan      html  css  js  c++  java
  • Linux 静态库与动态库

    静态库(.a)

    一个deal.c  usedeal.c

     

    重点  

    1. gcc -c deal.c 

     生成 deal.o  

    2. ar -rsv libdeal.a  deal.o

     生成 libdeal.a

    2.5  可以通过ar  -t libdeal.a 看一个静态库都包含哪些obg文件

    3. gcc -o usedeal usedeal.c -L./ -ldeal

    生成可执行程序usedeal

    4. ./usedeal

    动态库(.so)

    usedeal.c

    deal.h

    动态链接

    1 生成.o文件

    gcc -c -fPIC -o deal.o deal.c

    -c表示只编译(compile),而不连接。-o选项用于说明输出(output)文件名。gcc将生成一个目标(object)文件deal.o。

    注意-fPIC选项。PIC指Position Independent Code。共享库要求有此选项,以便实现动态连接(dynamic linking)。

    2生成.so文件

    gcc -shared -o deal.so deal.o

    库文件以lib开始。共享库文件以.so为后缀。-shared表示生成一个共享库。

     3.gcc -o test usedeal.c -ldeal -L.

    生成test可执行程序

    ./test

    动态加载

    usedeal2.c

    #include <stdlib.h>
    #include <stdio.h>
    #include "deal.h"
    #include <dlfcn.h>
    
    typedef void (*FN)(int a,int b);
    int main()
    {
        int a = 10;
        int b = 20;
         
        FN deal_fn = NULL;
        void *handle = dlopen("./deal.so",RTLD_LAZY);    
        const char *err = dlerror();
        if (NULL == handle)
        {
            printf("open err!
    ");
            return 0;
        }
    
       
        deal_fn =(FN) dlsym(handle,"add");
         
        if (NULL == deal_fn)
        {
            printf("open add err!
    ");
            return 0;
        }
        deal_fn(a, b);
            
        deal_fn =(FN) dlsym(handle,"sub");
        deal_fn(a, b);
        
    
        deal_fn =(FN) dlsym(handle,"mult");
        deal_fn(a, b);
    
       
        dlclose(handle);
        return 0;
    }

    编译

    gcc -o usedeal2 usedeal2.c -rdynamic -ldl

    效果

    写的太急 很多地方待周末 3.11补充(╯—﹏—)╯( ┷━━━┷ 

    参考

    http://www.cnblogs.com/vamei/archive/2013/04/04/2998850.html

    http://www.codeceo.com/article/linux-library.html

  • 相关阅读:
    13---Net基础加强
    12---Net基础加强
    11---Net基础加强
    10---Net基础加强
    09---Net基础加强
    08---Net基础加强
    07---Net基础加强
    06---Net基础加强
    05---Net基础加强
    04---Net基础加强
  • 原文地址:https://www.cnblogs.com/xiaodeyao/p/6512373.html
Copyright © 2011-2022 走看看