首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

KiB、MiB与KB、MB区别 原

原来没太注意MB与MiB区别,甚至没太关注还有MiB这等单位。  今天认真了一下,发现两者还是有区别的,具体差别是MB等单位以10为底数指数,MiB是以2为底数指数。 ?...不带"i"单位 1KB=10^3=1000,  1MB=10^6=1000000=1000KB, 1GB=10^9=1000000000=1000MB, 带"i"单位 1KiB=2^10...=1024, 1MiB=2^20=1048576=1024KiB 3     与我们密切相关是我们在买硬盘时候,操作系统报数量要比产品标出或商家号称小一些,主要原因是标出是以MB、GB...为单位,1GB就是1,000,000,000 Byte,而操作系统是以2进制为处理单位,因此检查硬盘容量时是以MiB、GiB为单位,1GB=2^30=1,073,741,824。      ...具体对比关系如图 ?

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

浅谈Linux文件

什么是 在windows平台和linux平台下都存在着大量。 本质上来说库是一种可执行代码二进制形式,可以被操作系统载入内存执行。...由于windows和linux本质不同,因此二者二进制是不兼容。 2. 种类 linux有两种:静态和共享(动态)。 二者不同点在于代码被载入时刻不同。...文件在linux下是如何生成 静态后缀是.a,它产生分两步 Step 1:由源文件编译生成一堆.o,每个.o里都包含这个编译单元符号表; Step 2:ar命令将很多.o转换成.a,成为静态...文件是如何命名,有没有什么规范 在linux下,文件一般放在/usr/lib和/lib下, 静态名字一般为libxxxx.a,其中xxxx是该lib名称 动态名字一般为libxxxx.so.major.minor...运行ldconfig,该命令会重建/etc/ld.so.cache文件; 3. ldconfig命令需要root权限; 总结 以上就是本文关于Linux文件全部内容,希望对大家学习Linux有所帮助

4.4K20

linux编译curl动态so

转载请注明出处:帘卷西风专栏(http://blog.csdn.net/ljxfblog)  curl是一个很强大http开源,c++里面能够很方便和http服务器交互。...最近项目开始内测,开始接登录和充值SDK,选择了使用curl来和第三方http服务器交互。...在windows下还是很容易使用,如何使用案例比比皆是,而且很容易就找到已经编译好动态进行测试,但是最后在linux下部署时候,发现不好找已经编译好so文件,最后没办法只好自理更生。...我是使用腾讯SDK里面附带curl源码(ps,腾讯SDK示例代码貌似没在linux测试过,我编译后使用他们代码,发现很容易崩溃,需要修改才能运行,但是windows正常)。...包含了编译生产、头文件等。 然后为了能够方便移植我们程序,把include/lib下面的头文件和so文件拷贝到自己工程目录就能使用curl了。

6.3K10

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

文章目录 动静态基本原理 认识动静态 动静态各自特征 静态打包与使用 打包 使用 动态打包与使用 打包 使用 动静态基本原理 动静态本质是可执行程序“半成品...认识动静态Linux下创建文件编写以下代码,并生成可执行程序。...在Linux下,我们可以通过ldd 文件名来查看一个可执行程序所依赖文件。...此时我们可以看到,libc-2.17.so实际上就是一个共享目标文件,准确来说,这还是一个动态。 在Linux当中,以.so为后缀是动态,以.a为后缀是静态。...动静态各自特征 静态 静态是程序在编译链接时候把代码复制到可执行文件当中,生成可执行程序在运行时候将不再需要静态,因此使用静态生成可执行程序大小一般比较大。

4.7K20

Linux】动态与静态底层比较

2 编译使用比较 那么 gcc编译时候是怎么进行: gcc不加-static选项默认使用动态,没有提供动态就只能使用静态 gcc加-static选项就使用静态 那么-static意义是什么呢...将我们程序进行静态链接,这就要求我们链接任何都要通过对应静态版本!!! 一般我们操作系统都是动态 并且在对.o文件打包时候: 静态使用ar -rc 文件名......一批头文件 + 一批文件(.so .a) 2 如何加载 如果要谈是如何加载,就要想来谈一谈可执行程序是怎么运行! 首先,可执行程序与都是磁盘文件。在可执行程序运行之前需要先找到对应文件。...静态很简单,不需要考虑这么多,因为在编译期间就把静态内容拷贝到了可执行文件当中。就不必谈论找到静态这一说了。动态就不一样,需要在运行过程中寻找与加载!...首先,虚拟地址储存在共享区 在磁盘中,动态编址是平坦模式编址,其地址0x1234就像是距离0000...一个偏移量 然后在共享区里,这个偏移量是没有改变1 所以想要执行库函数,就直接到共享区通过起始地址

15310

Linux详解

最近有小伙伴问我程序相关问题。程序存在很大程度上提高了程序复用性、可维护性,但是程序应用往往对于初学者来说有些摸不清头脑,所以这一期本文从Linux角度谈谈Linux程序。...Windows和Linux系统本质不同,所以这两个系统格式不同,同样也是不兼容,本文不讲Windows下,我们只关注Linux程序 例如我们常用标准C/C++、Qt、GTK等...换句话说,它只是没有任何版本号soname Linux系统上这样做目的主要是系统中允许不同版本文件共存,一般在命名文件时候通常与soname相同 如何装载共享 ldconfig命令,在Linux...动态加载如何实现 在Linux系统中,实现动态加载调用,有一个用于打开、查找符号、处理错误和关闭API。...Linux文件制作 本节只针对Linux概念及分类做详细阐述,下一节将详细讲解如何通过程序创建属于我们自己文件,包括创建静态、共享、动态加载实现等

2K40

不可思议Excel图表11: 实现运动诱发失明(MIB)动画模型

正如之前提到过,通过学习研究复杂图表制作,无论是否能够完全明白,都会很好地提高我们Excel绘图能力。 下面是一组旋转蓝色十字架和3个黄点。现在,注意中心(观看闪烁红色/绿色斑点)。...现实中,3个黄点不断出现,这被称为“运动诱发失明”或MIB。 ? 图1 实际MIB Excel模型比这个动画GIF表示更平滑。 MIB模型 这里有三种用于这种视错觉方法。...设置 首先,我在X和Y中设置一个数字-3到+3表格,然后在每个表格中增加/减少一个小数来表示十字宽度。这里使用是0.15。 下表是每个点X和Y值。 ?...这样,旋转后新位置就是: ? 图9 为所有十字交叉十字每个点都这样处理: ? 图10 矩阵算术 要在散点图上绘制线条,Excel需要在单元格区域或数组中2个X值,以及同样2个Y值。...,可以在完美Excel公众号中发送消息: MIB动画图 下载示例工作簿。

97430

linux 动态加载_linux默认动态加载路径

当我们在linux系统引用动态时,经常会遇到一个问题,加入我们需要动态没有在系统默认目录下,我们编译时使用-L指定了动态路径,编译时没有问题,但是执行调用该动态可执行文件时,却提示找不到动态...假设我们使用tensorflow,把需要调用libtensorflow.so和libtensorflow_framework.so两个动态放在我们和我们程序同一级目录下。...,使用ldd命令查看一下: 为什么我们编译时候明明指定了动态路径,而且程序编译时候没有问题,执行时候却找不到了呢?...1、因为我们在编译时候使用-L指定动态路径,只是告诉编译器我们所需要动态在某个目录下,只对编译起作用 2、当程序执行时,程序还是回去系统默认路径下寻找程序运行所需动态 所以在程序运行时候会出现找不到动态问题...解决办法,使用-Wl,-rpath 所需动态路径 告诉程序如果在默认路径下找不到所需动态,则去当前指定路径下找动态

11.6K20

Linux】静态和动态

Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态和静态 具体动态和静态相关内容点击跳转 Linux一般分为动态和静态: 静态(.a):文件以.a为后缀,程序在编译链接时候把代码链接到可执行文件中。...程序运行时候将不再需要静态 动态(.so):文件以.so为后缀,程序在运行时候才去链接动态代码,多个程序共享使用代码。...链接本质:无非就是我们调用库函数时候和标准是如何关联问题 名称:去掉前缀lib去掉后缀.so/.a剩下就是名称,比如libc.so就是C gcc 在编译时默认使用动态链接,而生成静态链接...: 静态采用是绝对编址 动态采用是相对编址,动态指定函数地址通过相对编址(偏移地址+段起始地址): 动态打包:-shared gcc -shared -o libmymath.so

25030

linux动态和静态

,加载时搜索过程;动态找不到问题;依赖问题;动态升级问题与步骤 一、基本概念 1.1、什么是 在 windows 平台和 linux 平台下都大量存在着。       ...由于 windows 和 linux 平台不同(主要是编译器、汇编器和连接器 不同),因此二者二进制是不兼容。        本文仅限于介绍 linux。...1.2、 种类  linux有两种:静态和共享(动态)。...在Linux下,动态和静态同事存在时,gcc/g++链接程序,默认链接动态。...解决方法: 解决办法是采用“rm+cp” 或“mv+cp” 来替代直接“cp” 操作方法。 linux系统动态有两种使用方法:运行时动态链接,动态加载并在程序控制之下使用。

12.3K20

Linux】静态和动态

动静态 一、静态 1. 静态概念 静态(.a):程序在编译链接时候把代码链接到可执行文件中。程序运行时候将不再需要静态。 2....如果我们将头文件和文件都安装到系统中了,-I 和 -L 就不需要带了。 二、动态 1. 动态概念 动态(.so):程序在运行时候才去链接动态代码,多个程序共享使用代码。 2....首先我们要知道,在 Linux 下,形成可执行程序是 ELF 格式可执行程序,它其中包含有一张类似于符号表东西,里面包含各种函数依赖以及地址,符号表就是动态链接这些动态。...绝对编址比较适合我们上面说那一套可执行执行逻辑地址;而相对编址比较适合形成中函数地址,因为中我们把函数地址形成之后,所有函数里面只需要记录它自己相比较于起始偏移量是多少,只记录偏移量...所以未来动态在地址空间中共享区中随意加载都可以了,因为我们方法编址方式都是相对编址方式,是相对于该偏移量是多少,所以无论该地址在共享区中如何变化,偏移量在该中是不变,所以我们就能很快地找到对应方法

16610

Linux下静态、动态创建与调用

一、前言 在项目开发时,经常会用到第三方,也会自己创建动态给别人或者给自己其他工程项目使用。 类型分为动态、静态。 在Linux下动态后缀为.so,静态后缀为.lib。...动态称为共享. 程序在编译时需要、运行时候也需。 静态在编译时候抽取需要使用函数进行编译、运行时候不需要。 静态编译程序比动态链接占用空间更加大。...二、动态创建与使用案例 2.1 创建动态 创建动态语法格式: gcc -fPIC -shared -o .so 源文件名称.c 如何命名?...说明: 默认情况下系统搜索动态路径是/lib 、 /usr/lib 方法1: 直接将动态拷贝到/lib 或者 /usr/lib 目录下。 [wbyq@wbyq linux_c]$ ....静态命名规则: libxxx.a 创建静态流程: 先将.c源文件编译成.o文件 gcc xxx.c xxx.c xxx.c ...

5.4K30

Linux静态和共享详解及实例

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

3.3K20

Linux 对函数理解

函数一般分为静态和动态两种,同样,链接也分为动静态链接。...三、在Linux命名 1.动态 我们直接编译一个文件,之后用file指令查看编出 test 可执行文件,这里可以看到 dynamically linked ,翻译成中文就是动态链接意思。...其中XXX就是名字,我们可以看到上面的名字是c,所以链接是c标准。 用这个程序非常多,但是只有一份,所有有C语言写程序,不会出现重复代码! 因为,动态是一个共享。...所以,我们下载一个C写程序,是不需要再下载标准。 2.静态 一般而言,系统会自动携带动态,但是静态可能需要自己装!...系统给我们提供 标准 .h(告诉我们怎么用),动静态 .so/.a 我们代码 + 代码 = 可执行程序! 这一套只在Linux下有效吗?在windows下原理也是一样

84530

Linux下创建自己共享

本质上来说库是一种可执行代码二进制形式,可以被操作系统载入内存执行。由于windows和linux本质不同,因此二者二进制是不兼容。...Linux操作系统支持函数分为静态和动态,动态又称共享Linux系统有几个重要目录存放相应函数,如/lib, /usr/lib。 静态函数、动态函数 A....B.这类名字一般是libxxx.so,动态又称共享;相对于静态函数,动态函数在编译时候并没有被编译进目标代码中,你程序执行到相关函数时才调用函数库里相应函数,因此动态函数所产生可执行文件比较小...由于函数没有被整合进你程序,而是程序运行时动态申请并调用,所以程序运行环境中必须提供相应。动态函数改变并不影响你程序,所以动态函数升级比较方便。...对一个做ar s等同于对该做ranlib 动态函数创建 gcc -shared -Wl,-soname,youLibSoname,-o youRealName a.o b.o **linux共享名称分为三段

2.4K10

Linux动态链接使用

动态链接与普通程序相比而言,没有main函数,是一系列函数实现。通过shared和fPIC编译参数生产so动态链接文件。程序在调用库函数时,只需要连接上这个即可。...例如下面实现一个简单整数四则运输动态链接,定义caculate.h和caculate.c两个文件,生产libcac.so动态链接。...针对二进制文件有用命令 查看文件类型 file 查看二进制文件链接到哪些 ldd 查看二进制文件里面所包含symbol,T表示加载,U表示undefined symbol nm 读二进制文件里面的信息...readelf -a smu.o 将二进制文件转换为汇编 objdump -d sum.o 动态链接生成 sum.c #include #include <stdlib.h...需要在.o文件生成时加参数-fPIC gcc -c sum.c -fPIC -o sum.o gcc sum.o -o shared sum.so 一般,共享编译命令为(曾经实验) 动态链接

4.7K10
领券