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

Linux静态与动态

由于windows和linux的本质不同,因此二者的二进制是不兼容的。本文仅限于介绍linux。 2.的种类 linux有两种:静态和共享(动态)。...静态的代码在编译过程中已经被载入可执行程序,因此体积较大。共享的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。...4.文件是如何产生的在linux 静态的后缀是.a,它的产生分两步 Step 1.由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表 Step 2.ar命令将很多.o转换成.a,成文静态...在linux文件一般放在/usr/lib /lib静态的名字一般为libxxxx.a,其中xxxx是该lib的名称 动态的名字一般为libxxxx.so.major.minor,xxxx...—/lib/,/usr/lib目录找到文件后将其载入内存 8.在新安装一个之后如何让系统能够找到他 如果安装在/lib或者/usr/lib,那么ld默认能够找到,无需其他操作。

8510

linux编译qt5.6.0静态

linux编译qt5.6.0静态 编译QT是一件比较麻烦的事情。所以如果没有必要,就不要编译了。如果你只需要使用QT的一些基本功能,那么就只编译源码目录下的qtbase目录下的东西即可。...下面所介绍的都只是在linux适用的(windows使用MinGW也可以,QT提供的MinGW安装包是32位的,需要64位的可以参考)。...提供一个我已经编译好的了 linux64位gcc编译 http://pan.baidu.com/s/1eRMnf26                 提取密码    iz39 windows64位mingw...意思是警告:使用静态链接将禁用动态加载插件的使用。确保导入所有需要的静态插件,或者编译所需的模块到中。这不是一个好的做法。 ?.../unix编程, linux系统, C/C++, Qt, 开源

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

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

    linux下有两种:动态静态(共享) 二者的不同点在于代码被载入的时刻不同。 静态的代码在编译过程中已经被载入可执行程序,因此体积比较大。...静态和动态的最大区别,静态情况,把直接加载到程序中,而动态链接的时候,它只是保留接口,将动态与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。...静态在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态。....o为扩展名的中间目标文件名,可以多个并列 参数        意义 -r            将objfile文件插入静态尾或者替换静态中同名文件 -x            从静态文件中抽取文件...隐式调用动态静态使用方法一致,使用静态和使用动态编译成目标程序使用的gcc命令完全一样,那当静态和动态同名时,gcc命令会使用哪个文件呢?

    16.9K21

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

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

    5.5K30

    Linux】动静态

    @TOC 动静态 1....设计 分为 静态(.a)和动态(.so) 的命名 以c++的为例 输入 ls /lib64/libstdc++* 以lib开头要去除 的真实名字为 stdc++ ---- 一般云服务器...,默认只会存在动态,不需要动态静态需要单独安装 myadd.h 实现一个加法的声明 #pragma once int myadd(int d1,int d2); ---- myadd.c...静态打包 只有一个.o的压缩包 tar - c :创建一个新的归档文件即压缩包 tar- r : 若.c文件修改了,则对一个或者多个.o文件做替换 ---- 当前目录下包含 mylib otherperson...将下载下来的和头文件,拷贝到系统默认路径,这个行为就叫做在Linux安装 对于任何软件而言,安装和卸载的本质是拷贝到系统特定的路径 如果要安装第三方的,(第一方是语言,第二方是操作系统系统接口

    2.4K30

    Linux】动静态

    hello,大家好,今天我们继续学习Linux中的动静态,我们将从不同的角度来学习如何使用,并如何制作一个可供他人使用的动静态文件,并试着探究一动态加载问题。那我们就开始学习吧!!...另外对于C/C++来说其的名称也是有规范要求的,例如在Linux:一般要求是lib + 的真实名称 +(版本号)+ .so /.a + (版本号),版本号是可以省略不写的。...那么,Linux在什么位置呢? 如上便是我们使用所要吧包含的所有的头文件。 接下来,我们回答几个问题: 问:1....我们为什么可以在Linux敲C语言代码呢?这是因为系统中有C语言所需的头文件和文件。 交付:将形成的归档文件和匹配的头文件都传给别人。...方案三 在与可执行程序同一路径,建立软链接 四.动静态的加载问题 4.1静态的加载问题 静态需要加载吗?不需要,静态一般不考虑程序加载过程。

    8210

    Linux静态和动态

    静态 一、静态 1. 静态概念 静态(.a):程序在编译链接的时候把的代码链接到可执行文件中。程序运行的时候将不再需要静态。 2....我们直接发布,会形成一个: 我们使用 tree 查看一: 生成了对应的静态之后,我们需要给别人使用,所以我们也可以对该进行打包: 然后将该打包的文件给别人即可。 3....使用静态 (1)朴素方法 — 直接使用 上面我们可以形成静态了,那么我们该如何使用别人的静态呢?...我们将所有的头文件给到用户: 还需要将对应的静态给到用户: 如上,我们对应的头文件和静态都有了,所以我们尝试编译一: 我们发现出现了链接错误,这是为什么呢?...首先我们要知道,在 Linux ,形成的可执行程序是 ELF 格式的可执行程序,它其中包含有一张类似于符号表的东西,里面包含各种函数依赖的以及地址,符号表就是动态链接这些动态的。

    53210

    Linux静态和动态

    Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态静态 具体的动态静态的相关内容点击跳转 Linux一般分为动态静态静态(.a):文件以.a为后缀,程序在编译链接的时候把的代码链接到可执行文件中。...究竟是动静态,取决你提供的是动态还是静态。...的安装(把安装到系统头文件路径): 把头文件和文件拷贝进系统的路径,gcc对于头文件的默认路径是:/usr.include;对于文件的默认路径是:/lib64: 但是不太推荐这样使用:第三方并没有经过测试...把对应的动态建立在系统的目录下: 总结一: 运行动态 1、拷贝.so文件到系统共享路径, 一般指/usr/lib 2、更改 LD_LIBRARY_PATH 3、ldconfig 配置

    28430

    Linux】从零开始认识动静态 - 静态

    直白一点来讲,假如你想玩游戏,静态就是买一台电脑放在宿舍,动态就是去网吧与其他人共享。 Linux系统基本都是使用动态: 接下来我们来详细说说静态和动态。...来看一具体命令: 生成静态[root@localhost linux]# ar -rc libmymath.a add.o sub.o ar是gnu归档工具,rc表示(replace and create...) 查看静态中的目录列表[root@localhost linux]# ar -tv libmymath.a rw-r–r-- 0/0 1240 Sep 15 16:53 2017 add.o rw-r–r...-L :可以帮助程序员动态加入需要链接的文件的搜索路径 -l(小写 L ):指明需要链接的 来实践一: 这样就可以不改变系统文件就完成与静态的链接!!!...验证一: 我们在回忆一,我们之前学习gcc的时候说过: -static 此选项对生成的文件采用静态链接 shared 此选项将尽量使用动态,所以生成文件比较小,但是需要系统由动态 我们在这里并没有指明

    13510

    linux制作静态和动态链接的方法

    编译 gcc main.c -l xxx [-L 路径] (如果不加-L则在标准路径查找) 运行 ./a.out 基本概念: 静态又称为文档文件(Archive File)。...Linux静态文件的后缀为"a"。 静态的代码在编译时就已经链接到应用程序中 静态中的各个成员(.o文件)没有特殊的存在格式,仅仅是一个.o文件的集合。...–lmylib -static指定编译器链接静态,-L.指定静态的路径为当前路径, 在gcc编译器中引用可搜索到的目录和文件时需用(-l+名), 如在gcc中加入-lm可以在程序汇中链接标准算术...,加上-lpthread可以链接到linux标准线程 总结: 使用静态可以使程序不依赖于任何其他而独立运行,但是会占用很多内存空间以及磁盘空间, 而且如果文件更新,则需重新编译源代码.../a.out 如果不指定则在标准路径找 当你发布要标准路径“/usr/lib 或 /lib”就不需要其它操作,但 gcc 时一定要加“-l”指定的名 永久修改运行时的查找路径

    3.1K20

    Linux共享静态、动态详解

    介绍 使用GNU的工具我们如何在Linux创建自己的程序函数?...1、静态函数,是在程序执行前就加入到目标程序中去了 ; 2、动态函数同共享函数是一个东西(在linux上叫共享对象, 文件后缀是.so ,windows上叫动态加载函数, 文件后缀是.dll)...在所有的情况,你都至少可以看到两个: · /lib/ld-linux.so.N(N是1或者更大,一般至少2)。这是这个用于加载其他所有的共享。...Linux系统,DL函数与其他函数在格式上没有特殊的区别,我们前面提到过,它们创建的时候是标准的object格式。...在几乎所有情况,您至少有两个依赖关系: /lib/ld-linux.so.N(其中N为1或更多,通常至少为2)。这是加载所有其他。 libc.so.N(N为6以上)。这是C

    8.8K11

    Linux静态与动态加载

    认识动静态:         我们在liunx见一见吧,现在我创建test1.c,编写如下程序: 这是一个非常简单的c语言程序,编译运行一: 注意我们调用了printf函数,但我们并没有写printf...在Linux当中,以.so为后缀的是动态,以.a为后缀的是静态。 在Windows当中,以.dll为后缀的是动态,以.lib为后缀的是静态。 认识了动态,那静态,又是什么呢?...,不再需要,但动态不行,在日常我们都会使用动态,很少使用静态。...-r(replace):若静态文件当中的目标文件有更新,则用新的目标文件替换旧的目标文件。 -c(create):建立静态文件。...注意上面我打包了两个,虽然看后缀一个静态,一个动态,但是其实上述的都是静态linux不是单单通过后缀来判断一个的类型,下面就来看看如何真正打包一个动态吧。

    15410

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

    认识动静态Linux创建文件编写以下代码,并生成可执行程序。...下面我们就通过这份简单的代码来认识一静态 在这份代码当中我们可以通过调用printf输出hello world,主要原因是gcc编译器在生成可执行程序时,将C标准也链接进来了。...在Linux,我们可以通过ldd 文件名来查看一个可执行程序所依赖的文件。...此时我们可以看到,libc-2.17.so实际上就是一个共享的目标文件,准确来说,这还是一个动态。 在Linux当中,以.so为后缀的是动态,以.a为后缀的是静态。...说明一,使用该动态的方法与刚才我们使用静态的方法一样,我们既可以使用 -I,-L,-l这三个选项来生成可执行程序,也可以先将头文件和文件拷贝到系统目录下,然后仅使用-l选项指明需要链接的名字来生成可执行程序

    4.8K20

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

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

    4.8K50

    Linux之动态静态

    前言 一、动态静态概念 在之前的文章中,介绍过动静态的概念,因此这次我们只是简单回顾一Linux中的分为动态静态。...,也就是说,一定要告知是哪一个路径的哪一个,即使该路径只有一个也要明确告知gcc是哪一个(我们以前写代码的时候,从未指明的名称,是因为gcc/g++默认帮我们填写了,因为它们可以识别C/C+...的安装 将安装到系统头文件。...总结 以上就是今天要讲的内容,本文介绍了Linux中的动静态的相关概念。...本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

    44720
    领券