当前位置: 首页 > news >正文

视频网站dedecms给个网站能用的2022

视频网站dedecms,给个网站能用的2022,网页游戏排行榜平台,详情页设计理念Linux学习笔记#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言#xff1a; 在 Linux 系统中#xff0c;静态库和动态库是开发中常见的两种库文件类型。它们在编译、链接、内存管理以及程序的性能和可维护性方面有着…Linux学习笔记 https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言 在 Linux 系统中静态库和动态库是开发中常见的两种库文件类型。它们在编译、链接、内存管理以及程序的性能和可维护性方面有着显著的差异。了解静态库与动态库的区别和使用方式有助于开发者根据实际需求选择最适合的解决方案。本文将详细介绍静态库与动态库的概念、差异、使用方法并通过实际的代码示例讲解如何创建和使用这些库。 目录 静态库与动态库的基本概念 静态库Static Library动态库Dynamic Library 静态库与动态库的区别 编译与链接时机文件格式与大小性能与内存管理使用场景 如何在 Linux 中创建静态库 创建静态库的步骤静态库的使用示例静态库的优缺点 如何在 Linux 中创建动态库 创建动态库的步骤动态库的使用示例动态库的优缺点 静态库与动态库的优缺点比较 性能方面存储与内存使用依赖管理 动态库的加载与链接机制 静态链接与动态链接的概念动态库的查找机制 静态库与动态库的底层实现 静态库的实现机制动态库的实现机制 进阶话题 如何处理库版本库文件的符号表与重定位库的跨平台使用 1. 静态库与动态库的基本概念 静态库Static Library 静态库是一种在编译时就将代码和资源打包到可执行文件中的库。静态库通常是由多个目标文件.o 文件组成的最终在编译时会将这些目标文件的代码合并到程序的可执行文件中。静态库的扩展名通常为 .a。 静态库的特点 在编译时将库文件的代码直接嵌入到可执行文件中。每个程序都需要自己链接一份静态库的副本。不需要在程序运行时进行额外的文件查找或加载。编译过程中会把库的所有代码复制到目标文件中增加了可执行文件的体积。 动态库Dynamic Library 动态库是一种在程序运行时加载的共享库。与静态库不同动态库的代码不会在编译时直接嵌入到可执行文件中而是在程序运行时通过动态链接器加载。动态库通常具有 .soShared Object扩展名。 动态库的特点 在程序运行时由操作系统动态加载。可以被多个程序共享减少了内存和磁盘空间的消耗。不需要在编译时复制代码程序的大小较小。在程序运行时可以更新动态库而不需要重新编译所有依赖该库的程序。 2. 静态库与动态库的区别 特性静态库Static Library动态库Dynamic Library文件扩展名.a.so编译时机在编译时静态链接在运行时动态加载链接方式静态链接编译时动态链接运行时程序体积较大库的代码嵌入程序中较小库的代码不嵌入程序中内存管理每个程序都拥有库的副本多个程序共享库的副本依赖管理依赖是固定的程序与库紧耦合依赖管理灵活库的更新不需要重新编译更新更新需要重新编译所有依赖的程序只需更新动态库不需要重新编译程序使用场景不需要动态链接支持的独立应用需要共享库、多程序共享资源的场景 编译与链接时机 静态库的链接发生在编译时。编译器会将库文件的所有目标文件内容复制到程序中生成一个包含所有必要代码的可执行文件。动态库的链接发生在程序运行时。动态链接器会在程序启动时加载所需的共享库并将其中的符号解析并链接到程序中。 文件格式与大小 静态库通常是 .a 格式文件较大因为它包含了库中所有的目标文件.o 文件。动态库通常是 .so 格式文件较小多个程序可以共享同一个动态库。 性能与内存管理 静态库的程序在运行时不需要加载额外的库文件因为它们已经嵌入到可执行文件中程序启动时性能较好。动态库的程序在运行时需要加载外部库文件虽然加载过程可能略有延迟但多个程序可以共享同一个动态库节省内存和磁盘空间。 使用场景 静态库适合小型应用程序和嵌入式系统特别是当程序不依赖于大量外部库时。动态库适合大型系统或需要频繁更新的应用程序因为库更新不需要重新编译应用程序。 3. 如何在 Linux 中创建静态库 创建静态库的步骤 编写源代码 创建一个简单的 C 文件定义一些函数 // mathlib.c #include stdio.hint add(int a, int b) {return a b; }int subtract(int a, int b) {return a - b; }编译为目标文件 使用 gcc 将 C 文件编译为目标文件 gcc -c mathlib.c -o mathlib.o创建静态库 使用 ar 工具将目标文件打包成静态库 ar rcs libmath.a mathlib.o使用静态库 创建一个程序来调用这个静态库 // main.c #include stdio.hint add(int, int); int subtract(int, int);int main() {printf(Sum: %d\n, add(5, 3));printf(Difference: %d\n, subtract(5, 3));return 0; }编译并链接静态库 gcc main.c -L. -lmath -o main运行程序 ./main静态库的优缺点 优点 不需要依赖外部库程序独立性强。程序启动速度较快。 缺点 程序文件较大内存占用较高。如果库有更新所有依赖该库的程序都需要重新编译。 4. 如何在 Linux 中创建动态库 创建动态库的步骤 编写源代码 // mathlib.c #include stdio.h__attribute__((visibility(default))) int add(int a, int b) {return a b; }__attribute__((visibility(default))) int subtract(int a, int b) {return a - b; }编译为共享库 使用 gcc 将代码编译为动态库 gcc -fPIC -shared mathlib.c -o libmath.so使用动态库 创建一个主程序调用动态库中的函数 // main.c #include stdio.hint add(int, int); int subtract(int, int);int main() {printf(Sum: %d\n, add(5, 3));printf(Difference: %d\n, subtract(5, 3));return 0; }编译并链接动态库 gcc main.c -L. -lmath -o main设置动态库路径并运行程序 export LD_LIBRARY_PATH.:$LD_LIBRARY_PATH ./main动态库的优缺点 优点 可以在程序运行时加载多个程序共享同一个库。更新库时无需重新编译依赖程序降低了维护成本。 缺点 程序启动时需要加载外部库可能会稍慢。如果程序依赖的库丢失或版本不兼容可能会导致运行时错误。 5. 静态库与动态库的优缺点比较 特性静态库动态库程序大小较大库的代码嵌入到程序中较小多个程序共享同一份库内存使用每个程序都需要加载一份库的副本多个程序共享同一份库节省内存启动速度较快不需要加载外部库文件稍慢需要加载外部库文件依赖管理静态程序与库紧密耦合动态程序可以独立于库更新更新需要重新编译所有依赖的程序只需更新库文件无需重新编译程序 6. 动态库的加载与链接机制 动态库的加载和链接分为两种方式编译时动态链接Compile-time Linking和运行时动态链接Runtime Linking。 编译时动态链接 编译时动态链接指的是在编译时指定使用的动态库编译器会将库的符号信息嵌入到可执行文件中。程序运行时操作系统会加载对应的动态库。 运行时动态链接 运行时动态链接是指程序通过 dlopen() 等系统调用在运行时加载库文件。这种方式更为灵活可以根据需要加载不同的库。 7. 静态库与动态库的底层实现 静态库静态库文件实际上是一个归档文件里面包含了一些目标文件.o 文件。当程序需要使用静态库时链接器会从静态库中提取所需的目标文件并将它们嵌入到可执行文件中。动态库动态库文件是一个共享对象包含了可以在多个程序中共享的代码。操作系统通过动态链接器如 Linux 上的 ld.so负责加载动态库并解析符号。 8. 进阶话题 如何处理库版本 库的版本管理对于动态库尤为重要。常见的方法是使用符号链接或者版本控制机制来管理不同版本的动态库。 库文件的符号表与重定位 库文件中的符号表包含了函数和变量的符号信息。链接器会根据符号表进行符号解析和重定位。 库的跨平台使用 动态库的跨平台使用通常依赖于编译时指定的架构和平台。使用如 autoconf、CMake 等工具可以帮助开发者更好地进行跨平台构建。 结论 静态库与动态库在 Linux 系统中的应用各有优势与劣势。静态库适用于需要独立性较强的程序而动态库则适用于内存共享和版本更新更加灵活的场景。在实际开发中开发者应根据应用的需求、维护成本和性能要求来选择合适的库类型。 本篇笔记 感谢各位大佬观看创作不易还请各位大佬点赞支持
http://www.hkea.cn/news/14487593/

相关文章:

  • 外贸建站用什么平台好编写程序的步骤
  • 网站做资讯需要获取许可证吗网页页面怎么设计
  • 网站案例分析昆山专业做网站
  • 西安专业做网站的做电子商务网站建设工资多少钱
  • 肇东网站建设wordpress 文章存档
  • 门户网站建设文案优惠云服务器
  • 网站制作工作室专业公司网站打不开用什么浏览器
  • html5移动端网站开发教程wordpress 页面分级
  • 怎么看到网站开发时间企业官网设计现状
  • 济南网站建设内容霸州市网站建设
  • 学网站开发推荐书沈阳网络教育电视平台
  • 秦皇岛市网站建设怎样在网站上做推广
  • 零基础学网站建设 知乎ps做图下载网站有哪些
  • 简单flash个人网站东莞市人力资源网官网
  • 网站开发费用算无形资产在线网页设计器
  • 三合一网站管理系统国美在线网站域名建设
  • 博罗中山网站建设南京正规小程序开发公司
  • 南昌建网站单位如何建设与维护网站
  • 响应式设计网站seo哪家公司好
  • 网站的宣传推广方式网站设计与开发培训
  • 百度给做网站公司wordpress 删除插件
  • 网站百度无排名sae 网站备案信息
  • 哪里可以做营销型网站施工企业安全生产管理体系案例
  • h5效果展示网站濮阳网站怎么做seo
  • 如何跑网站建设业务哪些网站可以做微课
  • 西安住房建设局网站首页合肥网站建设费用
  • 郑州陆港开发建设有限公司网站wordpress视频不全屏播放
  • 酒店类的电影网站模板网站建设招标需求
  • 制作网站网络科技公司网站建设 思路
  • 网站源码还可以做授权么wordpress the_content() 不显示