朋友们好,这里简单介绍一下LINUX学习中关于动态库与静态库的理解,以及站在封装和使用的角度去介绍是如何封装的?如何使用的?
我们先来理解几个问题:
1️⃣:库里面需不需要main函数?
不需要!
2️⃣:什么是链接?
就是把所有的.o文件链接形成一个可执行程序。
3️⃣:将我的所有.O文件给别人,别人可以使用吗?
可以!
4️⃣:你在使用库的时候,需要用到什么?
库文件和头文件。
gcc 或者g++ 只认识系统库,不认识其他第三方库,所以我们想要使用对应的静态库的话,怎么做呢?
方式一:
库的安装! 也就是将对应的头文件和库文件拷贝到系统路径下!
方式二:
指定路径, 大写的-i 头文件路径 大写的-L 库路径, 小写的l指定库名!
在makefile中,根据对应的依赖关系以及依赖方法生成对应的.a文件和.O文件!
ar是gnu归档工具,rc表示(replace and create)。
总结一下就是将源文件翻译成.O文件以后把所有的.O文件打包起来即可!
编译选项:
方式一:
库的安装! 也就是将对应的头文件和库文件拷贝到系统路径下!
方式二:
导入环境变量的方式, 程序运行的时候,会在环境变量中查找自己需要的动态库路径–LD_LIBRARY_PATH。
关键点:我们要想使用动态库,一定要让进程找到对应的静态库,因为程序和动态库是分开加载的,属于运行时找库!
示例: