1、静态库的制作
1、第一步将源文件生成对应的目标文件
2、第二步将所有的目标文件生成静态库文件
saoge@linux:~/StaticlibTest/statisLibTest$ ar -rcs libmycalcu.a *.o
3、静态库测试
gcc选项
-L:表示要连接的库所在目录
-I(大i):指定头文件所在目录
-l:指定链接时所需要的库,去掉前缀和后缀
saoge@linux:~/StaticlibTest/statisLibTest$ gcc main.c -L ./ -I ../dir -lmycalcu
2、动态库的制作
1、第一步生成目标文件家编译选项-fpic
saoge@linux:~/StaticlibTest$ gcc -fpic -c *.c -I ./dir/
2、生成共享库加链接器选项-shared(指定生成动态链接库)
saoge@linux:~/StaticlibTest/shareLibTest$ gcc -shared *.o -o libdymycalcu.so
3、测试
saoge@linux:~/StaticlibTest/shareLibTest$ gcc main.c -L ./ -I ../dir/ -ldymycalcu
查看当前可执行文件依赖的动态库
saoge@linux:~/StaticlibTest/shareLibTest$ ldd a.out
3、动态库常见的加载失败解决方案
1、将动态库拷贝到系统目录下
saoge@linux:~/StaticlibTest/shareLibTest$ sudo cp libdymycalcu.so /usr/lib/
测试结果
2、临时设置LD——LIBRARY——PATH环境变量
saoge@linux:~/StaticlibTest/shareLibTest$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/saoge/StaticlibTest/shareLibTest/
测试
3、设置全局环境变量,写配置文件
saoge@linux:~/StaticlibTest/shareLibTest$ vim ~/.bashrc
使配置文件生效,对于所有fork的进程
saoge@linux:~/StaticlibTest/shareLibTest$ source ~/.bashrc
4、修改配置文件/etc/ld.so.conf
saoge@linux:~/StaticlibTest/shareLibTest$ sudo vim /etc/ld.so.conf
使配置生效
saoge@linux:~/StaticlibTest/shareLibTest$ sudo ldconfig
测试
5、建立符号链接(永久性设置)
创建软连接
sudo ln -s /home/saoge/StaticlibTest/shareLibTest/libdymycalcu.so /usr/local/lib/
使生效
sudo updatedb
sudo ldconfig
测试结果