- 动态库
- 静态库
刚开始学编程时,需要下载一个环境(vs2019),这个环境包括编译器和标准库,标准头文件。那么什么是库呢,库和头文件有什么关系呢?
- 头文件里面放的函数声明,库文件里面放的是函数定义,因此头文件和库两者密不可分。
在Linux中静态库通常命名为libxxx.a,动态库通常命名为libxxx.so,但库的名字是去掉前缀lib和后缀后的字符串。比如libc.so 这个库的真实名字就是c
1.静态库的打包
- 将两个源文件编译为可重定位二进制文件(.o)
- ar -rc libxx.a *.o
- gcc Main.c -Iinclude -Llib -lxxx
- -I 指定头文件路径 可以移到默认路径下
- -L指定库文件路径 必须移到默认路径下
- -l 指定库名字
ldd test
:查看相关的文件
2.动态库的打包
- gcc -fPIC -c mysub.c gcc -fPIC -c myadd.c 形成与位置无关码
- gcc -shared -o libxxx.so *.o
- gcc -o mytest -Iinclude -Llib -lxxx,此时你告诉了编译器,但是没有告诉os,所以会报运行错误
- 解决办法:
- 环境变量:LD_LIBRARY_PATH
- 加入系统默认路径-软链接方式
- 配置文件:
- 解决办法: