网站建设挣钱么,暴雪战网官网,网站开发基本要求,网页源代码里哪个是视频链接什么是库文件
一般来说#xff0c;一个程序#xff0c;通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接#xff0c;就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合#xff0c;为目标文件提供可直接使用的变量、函数、类等…什么是库文件
一般来说一个程序通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合为目标文件提供可直接使用的变量、函数、类等。
库文件包含了静态链接库和动态链接库两种。两者最根本的区别在与在程序编译的过程中如何处理库文件和目标文件的链接关系。 静态链接库
静态链接库在Linux系统中以.a文件的形式存在。
在上图程序编译的链接阶段静态库会完全复制到可执行文件中一旦可执行文件构建完成就不再需要静态库的存在可执行文件在后续的使用中也不再依赖这个静态库。
动态链接库
虽然静态库非常容易理解且不会引入依赖问题但是试想一下如果你在统筹构建一个无比庞大的工程这时其中一个开发者升级了他所开发的库。这时你就需要花费很长的时间来重新构建这个如此庞大的工程。这时你就可以使用动态库来避免这个问题。
动态库在程序编译的**链接阶段仅将一些重要的信息如重定位和符号表信息复制到可执行文件中**可执行文件在后面执行的过程中如果需要引用这个库文件就会根据这些信息从系统中寻找对应的库文件以实现对应的功能。
静态库和动态库的区别
区别静态库动态库可执行文件大小较大因为动态库的内容会被完全复制到可执行文件中较小占用磁盘大小较大如果有多个可执行文件都用到同一个静态库这个静态库会被多次复制到不同的可执行文件中较小即使多个可执行文件都需要用到同一个动态库他们也只是共用同一个动态库文件扩展性与兼容性全量更新库文件的更新会引起整个可执行文件的重新编译及发布增量更新不需要重新编译可执行文件只需发布动态库文件依赖问题无依赖问题已构建的可执行文件不依赖其他静态库文件有依赖问题可执行文件的执行需要系统存在依赖的动态库文件复杂程度简单复杂会引起很多问题例如如何在运行时确定地址库文件版本管理等加载速度快慢
CMake 中 target_link_libraries 的 PRIVATEPUBLIC 和 INTERFACE 的区别
情况使用参数只有源文件(.cpp)中包含了库文件PRIVATE只有头文件(.hpp)中包含了库文件INTERFACE源文件和头文件都包含了库文件PUBLIC
这里只是简单介绍了以下具体的细节和解析请参考《CMake学习笔记.md》
参考链接
CMake教程二- 添加静态库文件和动态库文件