首页 > 其他分享 >动静态库

动静态库

时间:2024-10-03 14:00:44浏览次数:10  
标签:文件 gcc 静态 链接 动态 可执行程序

  1. 静态库:
    文件扩展名:.a
    链接方式是在编译时候直接集成到可执行文件中。

  2. 动态库
    文件扩展名字:.so
    链接方式是在运行时,根据符号表查找动态库的位置

  3. 库文件:就是把多个“.o文件”打一个包,给对方提供一个库文件。
    使用ar命令生成静态库
    ar -rc libmymath.a add.o sub.o

  4. 交付库-》库文件.a .so +匹配的头文件都给别人。所谓的安装:本质就是拷贝

  5. 如果需要链接第三方的库,必须指明库名称!!!

gcc会默认指定c语言的标准库,g++会自动指定c++的标准库

库的名称是去掉前缀和后缀,比如libmymath.a 那么库的名字叫mymath,-lmymath

  1. gcc默认是动态库。

  2. 系统中,通过拷贝来实现安装。

  3. 动态库:
    生成动态库:对于每个.c文件需要 gcc -c -fPIC my_add.c 生成.o文件,然后使用 gcc -share -o lib my math.so my_add.o my_sub.o

运行动态链接的执行文件:与静态链接的可执行文件(gcc只需要在编译时候指明路径和文件名字)不同。
动态链接的路径指明方式是:

  • 修改环境变量中的动态库的路径:$LD_LIBRARY_PATH
  • 修改环境变量
  • 使用软链接在本地路径下生成一个新的文件,这样子也可以找到。

ncourses 库(第三方库)

  1. 静态库加载:
    虚拟地址空间,可执行程序在编译时候就考虑到虚拟地址。静态库加载进代码区。

  2. 动态库加载:动态库中的指定函数的地址,写入到我们的可执行程序中。动态库中函数只需要填入在库中的偏移量地址数。在可执行程序需要执行一个外部动态库的函数的时候,会把动态库加载进内存,通过页表映射到pcb中的共享区,那么只需要库在共享区的起始地址和函数在动态库的偏移量地址。就可以找到函数的代码了。

在内存中,就算有一百个可执行程序需要使用同一个动态库,那么这个动态库在内存中只会有一份,而且是通过映射的方式存在于可执行程序中。

标签:文件,gcc,静态,链接,动态,可执行程序
From: https://www.cnblogs.com/zhudachang/p/18445644

相关文章

  • Linux_动态库与静态库(其一)
    1.动态库和静态库的定义动态库(.so):动态库是编译后不嵌入目标文件中的共享库,在程序运行的时候才去链接动态库的代码,可以被多个程序共享使用,通常以.so结尾。静态库(.a):静态库是将一组目标文件(.o文件)打包成一个单一的归档文件。在编译时,链接器会将所需的目标文件代码复制到最......
  • 静态QQ登录代码学习
    记录学习@搬砖界泰斗这只小狐狸的静态QQ登陆页面源码,了解静态登陆页面如何书写&&拓宽自己对css的理解Q1:用css调节子级元素位置时什么时候调节margin,什么时候调节padding?A1:margin对外,padding对内e.g.要实现一个这样的排版有一个大大盒子fafather,里面其中一个是大盒子father,再......
  • 静态合批和动态合批
    动态合批与静态合批其本质是对将多次绘制请求,在允许的条件下进行合并处理,减少cpu对gpu绘制请求的次数,达到提高性能的目的。两者是否开启都可以在ProjectSettings->Player->OtherSettings下的StaticBatching和DynamicBatching1.静态合批是将静态(不移动)GameObjects组......
  • PbootCMS伪静态怎么设置?(PbootCMS模板安装后内页打开404错误的解决方法)
    1.后台配置参数-URL规则选择伪静态模式登录PbootCMS后台。进入“系统设置”或相应的配置管理界面。在URL规则设置中选择“伪静态模式”。保存设置。2.根据服务器环境添加伪静态规则Apache环境:将网站根目录下的.htaccess文件复制到根目录。确认.htaccess文件内容正......
  • 基于Base64上传Excel文件(使用nginx座位静态服务器)
    1.导入依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version></dependency><dependency><groupId>org.apache.poi......
  • pbootcms在线升级后伪静态分页url变成?page=xx问题
    在PbootCMS中,如果你想在网站首页右侧或列表页左侧调用特定栏目的标签(tags),可以使用 {pboot:tags} 标签来实现。下面详细介绍如何使用该标签以及具体参数的含义。使用 {pboot:tags} 标签语法html {pboot:tagsscode=2,5,8num=50}[tags:text]{/pboot:tags}参......
  • 静态字段与静态方法_练习
    对象村出生人数publicclassPerson{privatefinalStringname;//姓名privatefinalintheight;//身高privatestaticintnumberOfPeople=0;//人数publicPerson(Stringname,intheight){this.name=name;this.height=......
  • Apache伪静态出现页面无法正常访问处理
    默认规则:apache RewriteRule^(.*)$index.php/$1[QSA,PT,L]这条规则适用于Apache采用模块化运行方式的情况。当请求URL不是目录或文件时,将所有请求重写为index.php/$1。备用规则:apache RewriteRule^(.*)$index.php[E=PATH_INFO:$1,QSA,PT,L]这条......
  • C++ 静态顺序表和动态顺序表
    对比静态顺序表与动态顺序表特性静态顺序表动态顺序表大小固定动态内存管理简单复杂随机访问快速快速插入/删除效率较低较低(需移动元素)扩展能力不可扩展可扩展C++静态顺序表概述定义:静态顺序表是一种线性表的实现方式,采用一段连续的内存空间存储数据元素,具有固定的大小。在......
  • pbootcms制作TAG标签列表时改成静态栏目URL结构
    在PBootCMS中,将TAG标签列表从动态链接转换为静态化的类似栏目结构的需求可以通过以下步骤实现:步骤1:修改PHP文件打开PHP文件:打开 APPs/home/controller/ParserController.php 文件。找到并修改代码:找到大约第1852行左右的代码。删除原有代码,并替换为新的代码......