动态库与静态库的概念与使用

静态库:静态库相当于中间文件(.o)的集合,静态库是在链接时使用,将静态库中的程序直接合成到最终的可执行文件中。

windows下表示为:   .lib

Linux:  .a

动态库(共享库):不可执行的可执行文件(其中没有main函数)

使用动态库的程序运行起来后,动态将动态库加载到内存上执行。

windows:    .dll

Linux:       .so

静态库的生成过程:*.c     功能代码的源文件

1.将多有的源文件编译生成中间文件(*.o)

eg:gcc   -c    main.c    -o    main.o

2.ar   crv    libxxx.a    *.o    ----->libymath.a

静态库的使用:

gcc    -o    main    main.c    -L(路径)     -l(库名)

gcc    -c    main    main.c    -L    ./lib          -lmymath

动态库的生成过程:    *.c     功能代码的源文件

gcc   -shared    -fPIC     -o    libxxx.so     *.c   ----->libmymath.so  

动态库的使用:

gcc   -o    main    main.c     -L(路径)     -l(库名)

gcc   -o    main    main.c     -L   ./so          -lmymath

使用动态库的程序在运行时,需要单独搜索并加载动态库文件

1.将动态库拷贝到    /lib     /usr/lib   任意一个路径下

2.设置环境变量    LD    LIBRARY    PATH

      export    LD   LIBRARY  PATH=绝对路径

3.修改配置文件     /etc/profile    ----->设置LD_LIBRARY_PATH

动态库与静态库的区别:

在同一个工程中,不同文件使用静态库都需将静态库拷贝到自己的文件中,而动态库是直接加载到内存上,所以下一个使用动态库的文件,不需要重复加载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值