静态库动态库制作及使用

静态库&动态库:

静态库:对空间要求较低,而时间要求较高的核心程序中

动态库:对时间要求较低 ,对空间要求较高

静态库制作及使用步骤:

1. 将.c生成 .o 文件
	gcc -c add.c -o add.o

2.使用 ar 工具制作静态库
	
	ar rcs lib库名.a add.o sub.o div1.o

3.编译静态库到可执行文件中:
	
	gcc test.c (库路径)lib库名.a -o a.out  -I (头文件路径)

	gcc test.c  ./lib/libmymath.a  -o a.out  -I ./inc

动态库的制作及使用:

1.将.c生成 .o 文件 (生成与位置无关的代码 -fPIC)

	gcc -c add.c -o add.o -fPIC

2.使用 gcc -shared 制作动态库

	gcc -shared -o lib库名.so add.o sub.o div.o

3.编译可执行程序时,指定所使用的动态库   -l 指定库名 -L指定库路径 -I 指定头文件路径

	gcc test.c -o  a.out -lmymath -L ./lib 	-I ./inc

4.运行可执行程序 ./a.out 出错!!!

	原因:
		链接器:  工作于链接阶段 ,工作时 需要 -l 和-L 

		动态链接器: 工作于 程序运行阶段, 工作时需要提供动态库所在目录位置

	通过环境变量:

		export LD_LIBRARY_PATH=动态库路径 
		./a.out 成功 (临时生效 ,终端重启环境变量失效)
		
	永久生效:
		
	方法一	写入终端配置文件  .bashrc
		

		1) vi ~/.bashrc

		2) 写入 export LD_LIBRARY_PATH=动态库路径 保存(建议使用绝对路径)

		3). .bashrc或者 source .bashrc 或者 重启终端 让修改后的 .bashrc 生效

		4)./a.out 成功!!!

		
	方法二 拷贝自定义动态库 到/lib (标准c库所在 目录位置)
发布了78 篇原创文章 · 获赞 10 · 访问量 3830

猜你喜欢

转载自blog.csdn.net/weixin_44374280/article/details/104242031