一、库的基本概念
1.库是什么?
(1)库是二进制文件。
(2)可将源代码->二进制格式的源代码
源代码:.c/.cpp
(3)起到加密作用
2.库制作出来之后,如何给用户使用?
(1)头文件
(2)制作出来的库
二、静态库的制作和使用
(1)命名规则:libxxx.a
lib
xxx--库的名字
.a
(2)制作步骤:
源材料:源代码.c/.cpp
将.c文件生成.o
将.o打包
ar rcs 静态库的名字 源材料
ar rcs libxxx.a a.o b.o
ar--archive
(3)库的使用
gcc test.c -I 指定头文件的路径 -L 指定库的路径 -l制定库的名字(去掉lib和.a)
-L:后接指定库的路径
-l:指定库的名字(去掉lib和.a)
例如:gcc test.c -I ./ -L ./lib -lxxx -o app
三、动态库的制作和使用
(1)命名规则:libxxx.so
lib
xxx--库的名字
.so
(2)制作步骤
将源文件生成.o文件
gcc a.c b.c -c -fpic(fPIC)
(3)打包
gcc -shared a.o b.o -o libxxx.so
(4)库的使用
头文件a.h
动态库 libxxx.so
参考函数声明编程测试程序main.c
gcc main.c -I 头文件所在目录 -L 动态库所在目录 -lxxx -o app
(5)动态库无法加载:
使用环境变量:
临时设置:
(在终端)export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
永久设置:
用户级别:
~/.bashrc --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
- 重启终端
- source ~/.bashrc
系统级别:
/etc/profile --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
- 重启PC
- source /etc/profile
/etc/ld.so.conf文件列表:
找到一个配置文件:
/etc/ld.so.conf
把动态库的绝对路径添加到文件中
执行一个命令:
sudo ldconfig -v
1.库是什么?
(1)库是二进制文件。
(2)可将源代码->二进制格式的源代码
源代码:.c/.cpp
(3)起到加密作用
2.库制作出来之后,如何给用户使用?
(1)头文件
(2)制作出来的库
二、静态库的制作和使用
(1)命名规则:libxxx.a
lib
xxx--库的名字
.a
(2)制作步骤:
源材料:源代码.c/.cpp
将.c文件生成.o
将.o打包
ar rcs 静态库的名字 源材料
ar rcs libxxx.a a.o b.o
ar--archive
(3)库的使用
gcc test.c -I 指定头文件的路径 -L 指定库的路径 -l制定库的名字(去掉lib和.a)
-L:后接指定库的路径
-l:指定库的名字(去掉lib和.a)
例如:gcc test.c -I ./ -L ./lib -lxxx -o app
三、动态库的制作和使用
(1)命名规则:libxxx.so
lib
xxx--库的名字
.so
(2)制作步骤
将源文件生成.o文件
gcc a.c b.c -c -fpic(fPIC)
(3)打包
gcc -shared a.o b.o -o libxxx.so
(4)库的使用
头文件a.h
动态库 libxxx.so
参考函数声明编程测试程序main.c
gcc main.c -I 头文件所在目录 -L 动态库所在目录 -lxxx -o app
(5)动态库无法加载:
使用环境变量:
临时设置:
(在终端)export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
永久设置:
用户级别:
~/.bashrc --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
- 重启终端
- source ~/.bashrc
系统级别:
/etc/profile --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
- 重启PC
- source /etc/profile
/etc/ld.so.conf文件列表:
找到一个配置文件:
/etc/ld.so.conf
把动态库的绝对路径添加到文件中
执行一个命令:
sudo ldconfig -v