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

阿玛尼手表网站网站建设孝感

阿玛尼手表网站,网站建设孝感,网站建设需要软件,flask api式网站开发静态库与动态库 A:静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 B:动态库(.so):程序在运行的时候才去链接动态库的代码&#…

静态库与动态库


A:静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。

B:动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

C:一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。

D:在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)

E:动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。

举个例子:

测试程序add.hint add(int a, int b);add.c#include "add.h"
int add(int a, int b)
{return a + b;
}sub.hint sub(int a, int b);sub.c#include "add.h"
int sub(int a, int b)
{return a - b;
}main.c
#include <stdio.h>
#include "add.h"
#include "sub.h"
int main(void)
{int a = 10;int b = 20;printf("add(%d,%d)=%d\n", a, b, add(a, b));a = 100;b = 20;printf("sub(%d,%d)=%d\n", a, b, sub(a, b));
}
 生成静态库

生成静态库: 

ar是gnu归档工具,rc表示(replace and create)

查看静态库中的目录列表:

t:列出静态库中的文件,v:verbose 详细信息

-L 指定库路径 ,-l 指定库名

测试目标文件生成后,静态库删掉,程序照样可以运行!

库搜索路径

 A:从左到右搜索-L指定的目录。

B:由环境变量指定的目录 (LIBRARY_PATH

C:由系统指定的目

  a:/usr/lib

  b:/usr/local/lib

生成动态库

A:shared: 表示生成共享库格式

B:fPIC:产生位置无关码(position independent code)

C:库名规则:libxxx.so

为什么要先:gcc -fPIC -c sub.c add.c ?

  1. 编译源代码gcc 是 GNU 编译器集合,用于编译 C 或 C++ 源代码文件(.c 文件)。

  2. 生成对象文件-c 选项告诉 gcc 编译源文件但不要进行链接。编译后生成的目标文件(也称为对象文件)扩展名为 .o,例如 sub.oadd.o

  3. 位置无关代码(Position Independent Code, PIC)-fPIC 选项指示 gcc 生成位置无关代码。这是创建共享库(shared libraries)所必需的,因为共享库的代码在内存中的位置可能会在不同的程序中变化,而它需要能够在这些不同位置正常工作。

  4. 准备共享库:生成的对象文件(.o 文件)是准备创建共享库的中间步骤。共享库在运行时被动态加载到内存中,并且可以在多个进程之间共享。

  5. 避免重复编译:如果源代码没有变化,使用 -fPIC 编译生成的对象文件可以被重用,无需重新编译源代码,这可以加快编译过程。

  6. 模块化:将不同的功能模块编译成单独的对象文件,可以提高模块化和可维护性。如果只需要更新或重新编译一个模块,不需要重新编译整个程序。

  7. 优化和错误检查:编译每个文件为单独的对象文件允许编译器对每个模块进行优化,并且在编译过程中可以单独检查每个模块的错误。

  8. 兼容性:使用 -fPIC 选项可以确保编译出的对象文件既可以用于生成共享库,也可以用于生成静态库或直接链接到可执行文件中。

         总结来说,gcc -fPIC -c sub.c add.c 命令的目的是将 sub.cadd.c 这两个源文件编译成位置无关的对象文件,为下一步生成共享库或静态库做准备。这样做可以提高代码的可重用性、模块化和编译效率。

使用动态库

编译选项

        l:链接动态库,只要库名即可(去掉lib以及版本号)

        L:链接库所在的路径

运行动态库

        1、拷贝.so文件到系统共享库路径下, 一般指/usr/lib

        2、更改 LD_LIBRARY_PATH

LD_LIBRARY_PATH 是一个在类 Unix 系统中使用的环境变量,它对动态链接器的行为有直接影响。

定义:

LD_LIBRARY_PATH 用于在运行时指定动态链接器搜索共享库(如 .so 文件)的路径。这个环境变量可以包含一个或多个以冒号(:)分隔的目录路径。

工作原理:

当一个程序启动时,如果它依赖于动态链接的共享库,动态链接器(通常是 ld.sold-linux.so)将负责加载这些库。动态链接器会按照以下顺序搜索库:

  1. 程序的 rpath(如果存在):这是编译时嵌入到程序可执行文件中的库搜索路径。
  2. LD_LIBRARY_PATH 环境变量:如果程序没有 rpath 或者 rpath 中没有找到所需的库,动态链接器会接着在 LD_LIBRARY_PATH 指定的路径中搜索。
  3. 系统的默认库路径:如果以上两个步骤都没有找到库,动态链接器会最后在系统的标准库路径(如 /lib/usr/lib/lib64/usr/lib64 等)中搜索。

   3、ldconfig 配置/etc/ld.so.conf.d/,ldconfig更新

  • ldconfig 会读取 /etc/ld.so.conf 文件以及 /etc/ld.so.conf.d/ 目录下的所有配置文件,这些文件定义了动态链接器搜索共享库的路径。
  • 根据这些配置文件,ldconfig 会搜索指定的目录,查找共享库文件(通常是 .so 文件),并更新 /etc/ld.so.cache 文件。

http://t.csdnimg.cn/FY6pricon-default.png?t=N7T8http://t.csdnimg.cn/FY6pr

[root@localhost linux]# cat /etc/ld.so.conf.d/bit.conf/root/tools/linux[root@localhost linux]# ldconfig

动态库与静态库的区别 

静态链接

        静态库在编译期间将库中的代码加载到程序里,加载成功后,后续与库无关。(编译成库后,把库删掉也能用)。

动态链接

        动态库是运行时加载的,运行时要找到动态库的位置(操作系统知道),加载并运行(运行的过程中不能离开库本身)。

静态库优缺点

        优点:运行速度较快,运行时无需动态链接。

        缺点:占用内存大,不同的进程要使用静态库,都要拷贝一份。维护成本高,静态库一旦更新,程序也要随之再编译一次。

动态库优缺点

        优点:占用内存小,多进程之间可以共享资源。维护成本较低,更新是只需要重新加载动态库即可。

        缺点:运行时相对于静态库来说较慢(因为要通过指定的路径找到动态库)。

 

http://www.yayakq.cn/news/304949/

相关文章:

  • 郑州视频网站建设大概多少钱上海人才中心
  • 建设网站有什么作用可做宣传的网站都有哪些
  • 如何做网站商城网站数字化建设方案
  • 做网站 哪些公司在电子商务网站建设中需要哪些知识
  • 百度有做企业网站吗wordpress版本替换
  • 旅游网站建设策划书范文微信推广工具
  • 芜湖市建设工程质监站网站上海哪家公司可以做网站
  • 宁波网站优化软件如何清空网站数据库
  • 推荐几个没封的网站2021温州做网站最好的
  • 网站开发用原生aso关键词优化工具
  • 全国分类信息网站山东德州网站建设哪家最好
  • 织梦网站访问量统计代码只做汽车的网站
  • 手机网站开发语言青海建筑网站建设公司
  • 南昌网站设计网站开发辽宁省建设厅官方网站职称评定
  • 能打开所有网站的浏览器wordpress 价格表单
  • 天津开发区建设工程管理中心网站做类似淘宝一样的网站有哪些
  • 学网站ui设计社交网站wap模板
  • 网站商城首页怎么做吸引人免费云网站一键生成app
  • 外国网站手机dns安阳论坛网
  • 进贤网站建设h5小程序制作平台
  • 邢台网站建设要多少钱wordpress去除顶部
  • 定制建站网站网站建设视频教程推荐
  • 苏州seo网站推广哪家好网站建设合同印花税税目
  • 茂名模板建站代理网站建设平ppt
  • 成都免费建网站公司ppt素材
  • 京东电子商务网站建设网站建设与实践高自考
  • 我们是谁 网站运营中国航发网上商城
  • 推广运营公司网站wordpress 链接重定向
  • 网站多语言模块免费咨询肾病专家
  • 响应式网站 做搜索推广缺点网络营销人员招聘信息