首页
学习
活动
专区
工具
TVP
发布

linux动态静态使用_静态使用

认识动静态Linux下创建文件编写以下代码,并生成可执行程序。...此时我们可以看到,libc-2.17.so实际上就是一个共享目标文件,准确来说,这还是一个动态。 在Linux当中,以.so为后缀是动态,以.a为后缀静态。...缺点: 使用静态生成可执行程序会占用大量空间,特别是当多个静态程序同时加载而这些静态程序使用都是相同,这时在内存当中就会存在大量重复代码。...-r(replace):若静态文件当中目标文件更新,则用新目标文件替换旧目标文件。 -c(create):建立静态文件。...因为头文件add.h当中只有my_add函数声明,并没有该函数定义,所以还需要指定所要链接文件搜索路径。

4.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux】动静态

@TOC 动静态 1....设计 分为 静态(.a)和动态(.so) 命名 以c++为例 输入 ls /lib64/libstdc++* 以lib开头要去除 真实名字为 stdc++ ---- 一般云服务器...,默认只会存在动态,不需要动态静态需要单独安装 myadd.h 实现一个加法声明 #pragma once int myadd(int d1,int d2); ---- myadd.c...,拷贝到系统默认路径下,这个行为就叫做在Linux下安装 对于任何软件而言,安装和卸载本质是拷贝到系统特定路径下 如果要安装第三方,(第一方是语言,第二方是操作系统系统接口),要正常使用,...---- 查看自己配置文件时,已经了对应路径 还需让其生效 ---- 输入 sudo ldconfig 指令 就会让系统加载新配置文件 ---- 即可正常运行程序

2.3K30

linux动态静态

1.2、 种类  linux两种:静态和共享(动态)。...可以看到 ln 命令依赖于 libc 和 ld-linux 1.7、使用nm工具,查看静态和动态中有那些函数名; (T类表示函数是当前定义,U类表示函数是被调用,...nm列出符号很多, 常见三种:: T类:是在库中定义函数,用T表示,这是最常见; U类:是在库中被调用,但并没有在库中定义(表明需要其他支持),用U表示; W类:是所谓“弱态”符号...) /lib/ld-linux.so.2=>/lib/ld-linux.so.2 (0x40000000) 从上面的结果可以继续查看printf最终在哪里被定义兴趣可以go on 1.8...2、如果f是一个静态(.a),那么链接器将尝试匹配U中未解析符号与静态成员(静态成员就是.o文件)定义符号。

12.2K20

Linux静态和动态

静态 一、静态 1. 静态概念 静态(.a):程序在编译链接时候把代码链接到可执行文件中。程序运行时候将不再需要静态。 2....使用静态 (1)朴素方法 — 直接使用 上面我们可以形成静态了,那么我们该如何使用别人静态呢?...首先我们要知道,在 Linux 下,形成可执行程序是 ELF 格式可执行程序,它其中包含有一张类似于符号表东西,里面包含各种函数依赖以及地址,符号表就是动态链接这些动态。...当我们需要将可执行程序加载到内存中时,动态链接程序,不光光自己要加载,链接也要加载到内存中! 然后我们要知道,程序没有被加载到内存时候,程序内部地址吗?有的!...我们也能从上面的引入概念中知道,程序没有被加载时候,程序内部就已经地址了,即在磁盘时候就已经虚拟地址了,已经被编译好了。

12710

Linux静态和动态

Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态静态 具体动态静态相关内容点击跳转 Linux一般分为动态静态静态(.a):文件以.a为后缀,程序在编译链接时候把代码链接到可执行文件中。...如何找到动态: 把路径添加到环境变量LD_LIBRARY_PATH,比如当前自己制作路径是 /home/hwc/dir/test/mylib/lib 直接运行: 但是我们自己定义环境变量只是本次登录有效...想永久有效,除了把拷贝到系统目录下之外,我们还有其他方法: 1.配置文件(/etc/ld.so.conf.d/):动态进行对应搜索时可以采用自己定义conf文件找到动态 2.建立软链接直接找到对应...而静态可能有多个程序用了C,加载到内存时,内存里可能会存在100份重复代码。而动态链接不会出现重复代码,减少内存。

23230

linux 动态 静态_静态库里面包含动态

动态静态 文件系统补完 文件三个时间acm 动态静态 动态链接与静态链接 静态与动态静态对比 生成静态 打包静态 使用静态 生成动态 打包动态 使用动态 文件系统补完...Modify:文件内容最近修改时间 Change:文件属性最近修改时间 那么这三个时间什么作用呢?...; printf("a+b:%d\n", Add(a, b)); printf("a-b:%d\n", Sub(a, b)); return 0; } 发现代码编译不过去,报错说函数Add及Sub未定义...这里解决方法多种,但我倾向于推荐下面这一种: 修改环境变量LD_LIBRARY_PATH,将动态所在路径添加到该环境变量中,这样程序在运行时系统就能够找到动态,从而运行成功。...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

7.2K20

Linux共享静态、动态详解

1、静态函数,是在程序执行前就加入到目标程序中去了 ; 2、动态函数同共享函数是一个东西(在linux上叫共享对象, 文件后缀是.so ,windows上叫动态加载函数, 文件后缀是.dll)...静态函数 静态函数实际上就是简单一个普通目标文件集合,一般来说习惯用“.a”作为文件后缀。可以用ar这个程序来产生静态函数文件。Ar是archiver缩写。...环境变量LD_PRELOAD列出了所有共享函数中需要优先加载文件,功能和/etc/ld.so.preload类似。这些都是/lib/ld-linux.so这个loader来实现。...当“反向相关性”时,您需要使用此选项,即,DL具有未解决符号,按照惯例,必须在要加载这些程序中定义它们。对于“反向相关性”工作,主程序必须使其符号动态可用。...幸运是,在类Unix系统(包括Linux)上,您可以同时加载多个版本,所以当一些磁盘空间损失时,用户仍然可以运行需要旧“旧”程序。

8.6K10

Linux】动静态以及动静态链接

答案是肯定,我们可以在 /usr/include路径下找到Linux默认携带这些 头文件,但是我们打开stdio头文件后,发现里面 仅仅只是printf函数声明,并没有具体定义,那么函数定义都放在哪里了呢...动静态与动静态链接 在Linux下共分为两种,一种是动态,另一种为静态。其实我们可以通过后缀就可以区分该是否为动态。...动态命名一般为xxxlibx(这里x是指语言).so,静态一般为:xxxlibx.a 动态与动态链接 感性理解 网吧(动态/共享) 我们可以将动态看作是学校附近一个网吧,网吧里很多电脑...静态静态链接 感性理解 感性理解就是将网吧里我们最喜欢那台电脑给买回来,放在宿舍里供自己玩耍。...理性理解 静态专门让编译器对用户程序进行静态链接,在链接时,将静态中所需要完整代码给拷贝到自己可执行程序内部中。

4.7K50

Linux之动态静态

前言 一、动态静态概念 在之前文章中,介绍过动静态概念,因此这次我们只是简单回顾一下。 Linux分为动态静态。...位置无关码目标二进制文件什么特殊? 静态采用是绝对编址; 动态采用是相对编址。即,指定函数地址采用相对编址(偏移地址 + 段起始地址)。...当然,我们还有其它办法: 配置文件(/etc/ld.so.conf.d/):动态进行搜索时可以通过自己定义conf文件找到动态。 建立软链接,直接找到对应。...动态相对于静态更节省内存,静态由多个程序使用相同库函数,加载到内存中就会导致内存中有多份重复库函数代码,而动态则是多个程序共用一份动态,不会导致出现重复库函数代码,就节省了内存空间。...总结 以上就是今天要讲内容,本文介绍了Linux静态相关概念。

28120

Linux下动态(.so)和静态(.a) 区别

linux下有两种:动态静态(共享) 二者不同点在于代码被载入时刻不同。 静态代码在编译过程中已经被载入可执行程序,因此体积比较大。...静态和动态最大区别,静态情况下,把直接加载到程序中,而动态链接时候,它只是保留接口,将动态与程序代码独立,这样就可以提高代码可复用度,和降低程序耦合度。...无论静态,还是动态,都是由.o文件创建。...总结: 编译静态时先使用-c选项,再利用ar工具产生.编译动态方式依不同版本UNXI而定。隐式调用动态静态用法相一致,而显示调用动态则需要借助动态加载共享库函数族。...隐式调用动态静态使用方法一致,使用静态和使用动态编译成目标程序使用gcc命令完全一样,那当静态和动态同名时,gcc命令会使用哪个文件呢?

16.3K21

Linux静态、动态创建与调用

一、前言 在项目开发时,经常会用到第三方,也会自己创建动态给别人或者给自己其他工程项目使用。 类型分为动态静态。 在Linux下动态后缀为.so,静态后缀为.lib。...动态称为共享. 程序在编译时需要、运行时候也需。 静态在编译时候抽取需要使用函数进行编译、运行时候不需要静态编译程序比动态链接占用空间更加大。.../a.out 三、静态创建与使用 3.1 创建静态 注意: 动态如果静态名字重名时候,编译器优先使用动态....静态命名规则: libxxx.a 创建静态流程: 先将.c源文件编译成.o文件 gcc xxx.c xxx.c xxx.c ......例如: ar crv libmylib.a my_print.o my_math.o 3.2 如何使用静态 [wbyq@wbyq linux_c]$ cd sum/ [wbyq@wbyq sum]$

5.3K30

Linux静态和共享详解及实例

Linux下分为静态和共享(也叫动态),当然Windows下也有静态(.lib)和动态(.dll),这里主要是讲解Linux静态和共享,以及它们简单实现。        ...在Linux静态以.a为后缀,首先静态实现是在文件编译后链接过程中就被载入到了程序中,那么后续程序运行使用就不会再依赖,那么弊端就是将静态载入到程序中会导致程序体积变大,而且如果静态后续进行了更新...而共享以.so为后缀,它实现方式是在链接过程中不会将载入到程序中,而是生成一个记录表,当程序运行时候再去通过记录表去链接共享,那么这个好处就是程序体积小,而且当不同程序公用一个时候...静态        对于静态创建用ar命令:ar  rcs  静态名.a  *.o,然后我们就得到了一个.a静态,然后我将其放到了lib文件夹下。 ?        ...共享 对于一个共享来说,它可以三个名字,虽然这不是必须,但是对于后续版本维护或者更新来说,最好是规范使用这三个名字,可以极大方便我们去维护和更新共享

3.3K20

linux安装lib包_linux生成静态

前几天手里智能锁项目 , 收到产品建议(命令)说 , 就是人脸识别成功时候 , 不要只显示摄像头捕捉到图像 , 要弄个酷炫一点背景, 背景里图片中间个圆圈, 人脸就放到圆圈里也就是类似这样...in_buf C 如果out_buf当前像素点是黑色不变, 否则填充in_buf到out_buf 了思路了 , 就要付诸行动 , 花了好几个小时来了解了一下PNG图片格式 , 又找到一个资料比较全..., 就各种找资料 , 把png读写跑了一遍 , 特意记录一下 关于PNG文件格式这里不讨论 , 兴趣朋友直接百度”PNG文件格式”会得到自己想要答案 ---- 一: 安装PNG文件 因为PNG...和 zlib gcc test.c `pkg-config libpng16 zlib –libs –cflags` 功能就是简单得读取PNG格式图片, 再生成(写入)一个新一模一样图片 ,...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

6K20

linux学习 建立静态,动态,写简单makefile

建立静态 建立四个文件 bin(可运行文件),lib(),include(头文件),src(放源文件) 这里明为add 在src文件里运行 1)gcc -c add.c //编译add.c.../lib –l(小写爱偶,名为add) add –I(大写i) ../include(放头文件) 建立动态 gcc -fPIC -c add.c ...../include(放头文件) 生成add.o目标文件 gcc -shared -o libadd.so add.o 生成libadd.so动态 这个名是add 将这个放在根文件夹lib文件中.../include(放头文件) (注意这里写名,没有lib和.so) 动态静态比較: 动态仅仅在运行时候才被链接使用 动态能够被多个程序使用,所以也称共享 静态将会整合大程序中,程序运行是不用夹在静态...,因此静态会是程序臃肿难以升级,但比較easy部署 动态便于升级,但不easy部署 使用makefile 三个文件 bin(可运行文件),include(头文件),src(放源文件) 目标项

4.4K10

Linux】软硬链接与动静态

环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【 Linux 】欢迎支持订阅  相关文章: 【Linux】动静态以及动静态链接 【Linux】基础IO_文件系统 软硬链接...实际上,软链接又称为符号链接,软链接文件是一个独立文件,自己inode属性以及内容,软链接文件内容就是只包含了源文件路径名称。因此大小要比源文件要小很多。...动静态 什么是文件? 我们在编写C/C++代码时,实际上一直都在用(c/c++标准),在编写代码时,很多库函数诸如printf等,我们为什么能直接拿来用呢?...这里一点需要注意,就是我们一般会把头文件,单独放在一个目录,文件单独放在一个目录。(上面静态例子忘记了,这里说一下。)...因为在编译阶段会将中方法代码加载到可执行程序中,这样就会出现一个情况,假如同一个方法比如printf,被调用了多次,这也就会导致printf实现代码,被重复复制了多次,出现大量冗余重复代码,这也就是为什么静态链接生成可执行程序体积大小非常大原因

15930

Linux基础——gcc编译、静态与动态(共享

(MyTest为静态名字) 2、静态作用分析 在项目开发过程中,经常出现优秀代码重用现象,又或者提供给第三方功能模块却又不想让其看到源代码,这些时候,通常做法是将代码封装成或者框架,生成静态要和头文件同时发布...优点: 寻址方便,速度快 在链接时被打包到可执行文件中,直接发布可执行程序即可以使用 缺点: 静态代码被加载到可执行程序中,因此体积过大 如果静态函数发生改变,必须重新编译可执行程序 3、静态制作与使用.../app (执行失败,找不到链接,没有给动态链接器(ld-linux.so.2)指定好动态 libmytest.so 路径) 第二种方法: gcc + 源文件 + -I头文件 + libxxx.so...ldd app可以查看当前链接情况 第一种方法: export LD_LIBRARY_PATH=自定义动态路径 (只能起到临时作用,关闭终端后失效) LD_LIBRARY_PATH : 指定查找共享...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

7.4K40

定义规则实现将多个静态合并为一个动态静态

1 前言 2 自定义规则实现 2.1 规则功能 2.2 实现规则理论基础 2.3 规则代码实现 3 总结 4 参考资料 1 前言 为了实现如标题所述将多个静态合并为一个动态,内置 Bazel...另外我们还需要传入 gcc 将多个静态合并成一个动态相关参数、待合成静态列表、最后要生成动态名称和路径。这样就是一个比较完善定义规则了。...2 自定义规则实现 2.1 规则功能 将多个静态合并成一个动态 将多个静态合并成一个静态 可以设置生成名称和生成路径 静态作为规则依赖 2.2 实现规则理论基础 将多个静态合并成一个动态...这种依赖也分为两种,一种是 libD.a 是外部已经编译好静态,而 libE.a 是 cc_library 规则编译出来静态。...最后在实现自定义规则中将多个静态合并为一个动态示例中,这里几个点我们需要注意下: 在实现我们中间文件拷贝过程中,如果最后没有实现输出 output Action,那么中间文件也不会产生,这在我调试过程中带给了我一阵疑惑

4.9K20
领券