静态库动态库

区别

库文件有两种,静态库和动态库(共享库),区别是:
静态库在程序的链接阶段被复制到了程序中;
动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。

好处

1.代码保密
2.方便部署和分发

静态库

命名

libXXX.a (xxx)自定义

gcc -c add.c min.c
ar rcs libxxx.a add.o min.o

gcc main.c -o app -I ./include/ -l calc -L./lib

动态库

命名

libXXX.so (xxx)自定义 (windows .dll)

制作

gcc -c -fpic/-fPIC a.c b.c

gcc -shared a.o b.o -o libcalc.so

ldd 检查依赖

依赖配置

//1
  用户级别
  .bashrc

  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pre/Linux/libma.so

  . .bashrc

  系统级别
  sudo vim /etc/profile

  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pre/Linux/libma.so

  source /etc/profile
//2
sudo vim/etc/ld.so.conf
sudo ldconfig

//3
/lib/,/user/lib

对比

静态库

速度快。移值方便
浪费系统资源,更新,部署,发布更麻烦

动态库

共享库,更新,部署,发布简单,可以控制何时加载
速度慢,发布需提供动态库

posted @ 2022-03-02 18:32  InsiApple  阅读(34)  评论(0编辑  收藏  举报