静态库、动态库

静态库

静态库 静态库
优点 运行速度快
缺点 占用系统资源比较多
使用的场合 对时间要求很高的场合

静态库的制作:
1、把所有的源程序(.c文件)制作成目标文件(.o 文件)
gcc -c mul.c -o mul.o
gcc -c sub.c -o sub.o
gcc -c add.c -o add.o

2、使用工具将所有 .o 打包生成静态库文件(静态库的后缀名是 .a )
ar rcs lib库名.a mul.o sub.o add.o

3、编译的时候 gcc 库包含的相关命令

-L 库文件所在的目录
-l(L的小写) 包含要添加到程序中的库,后面跟库名即可
-I(i的大写) 指定头文件所在路径

例如:gcc 2.c -L/home -lmylib -I…/

动态库制作

1、将要作为动态库的文件做成目标文件文件(.o)
注意和生成普通目标文件的区别
gcc -c xxx.c -o xxx.o -fPIC

2、将目标文件编译成动态库,后缀名是 .so
gcc -shared -o lib库名.so xxx.o

3、编译的时候需要把动态库加上
在这里插入图片描述

gcc src/main.c -L./lib -lmylib -o bin/a.out

4、运行时候会找不到动态库文件,解决办法:
1、临时办法,只在当前终端有效,终端重启以后就没用了
在终端输入以下命令:
export LD_LIBRARY_PATH=库所在目录的绝对路径

2、修改终端的配置文件 ~/.bashrc

  • vim ~/.bashrc
  • 把 export LD_LIBRARY_PATH=库所在目录的绝对路径 添加到文件的最后一行
  • 重启终端或者运行命令 source ~/.bashrc 使用配置文件生效

3、将动态库放到系统默认目录下 ===> /usr/lib

4、配置文件 /etc/ld.so.conf

  • vim /etc/ld.so.conf
  • 将库文件的绝对路径添加到库的最后一行
  • 使配置文件生效:ldconfig -v

查看可执行使用了哪些动态库的命令:ldd 可执行文件
动态库和静态库在同一个目录下,默认包含的是动态库

猜你喜欢

转载自blog.csdn.net/weixin_43665091/article/details/84781488
今日推荐