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 可执行文件
动态库和静态库在同一个目录下,默认包含的是动态库