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

linux编译qt5.6.0静态

linux编译qt5.6.0静态 编译QT是一件比较麻烦的事情。所以如果没有必要,就不要编译了。如果你只需要使用QT的一些基本功能,那么就只编译源码目录下的qtbase目录下的东西即可。...下面所介绍的都只是在linux适用的(windows使用MinGW也可以,QT提供的MinGW安装包是32位的,需要64位的可以参考)。...-reduce-relocations 减少通过额外的链接器优化的重加载 (仅qt/X11 和Qt/linux嵌入式 ;实验性的;需要 GNU ld > = 2.18) -no-use-gold-linker...意思是警告:使用静态链接将禁用动态加载插件的使用。确保导入所有需要的静态插件,或者编译所需的模块到中。这不是一个好的做法。 ?.../unix编程, linux系统, C/C++, Qt, 开源

89430

Linux静态与动态加载

认识动静态:         我们在liunx见一见吧,现在我创建test1.c,编写如下程序: 这是一个非常简单的c语言程序,编译运行一: 注意我们调用了printf函数,但我们并没有写printf...在Linux当中,以.so为后缀的是动态,以.a为后缀的是静态。 在Windows当中,以.dll为后缀的是动态,以.lib为后缀的是静态。 认识了动态,那静态,又是什么呢?...注意上面我打包了两个,虽然看后缀一个静态,一个动态,但是其实上述的都是静态linux不是单单通过后缀来判断一个的类型,下面就来看看如何真正打包一个动态吧。...gcc -fPIC -c test2.c test3.c -fPIC作用于编译阶段,告诉编译器产生与位置无关的代码,此时产生的代码中没有绝对地址,全部都使用相对地址,从而代码可以被加载加载到内存的任意位置都可以正确的执行...这正是共享所要求的,共享加载时,在内存的位置不是固定的。

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

    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...和ld-linux 7.可执行程序在执行的时候如何定位共享文件 当系统加载可执行代码时候,能够知道其所依赖的的名字,但是还需要知道绝对路径 此时就需要系统动态载入器(dynamic linker

    8510

    Windows Qt 静态编译连接

    Windows Qt 静态编译连接 本文介绍的是Windows Qt 静态编译连接,Qt静态和动态,前面的内容也有所介绍,先来看本文的静态编译。...关于Windows Qt 静态编译连接,似乎一直没有静态编译Qt的需求:一不在没有管理员权限的机器上使用,二不制作绿色软件,三动态编译工作得很好,再配合 nsis 制作一个安装包,有什么必要静态编译呢...没特殊说明的话,以下讨论的是 MSVC2008 的情况: 静态编译 或许有两个层次: 编译出的程序不依赖 QtCore4.dll、QtGui4.dll 等 Qt静态 编译出的程序不依赖 msvcr90...插件都成静态了,无法动态加载了(或许已不能被称为插件了) 看 QtPlugin 的Manual,有关于静态插件的使用介绍 看例子中 tools/plugandpaint 例子,使用的静态插件 常用插件...小结:Windows Qt 静态编译连接的内容介绍完了,希望本文对你有所帮助!

    33020

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

    linux下有两种:动态静态(共享) 二者的不同点在于代码被载入的时刻不同。 静态的代码在编译过程中已经被载入可执行程序,因此体积比较大。...静态和动态的最大区别,静态情况,把直接加载到程序中,而动态链接的时候,它只是保留接口,将动态与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。...例如将libd2.so换成libd.so 显式调用动态 显式调用动态,编译时无需文件,执行时动态可存储于任意位置,库里共享对象必须先申请后使用,不同动态版本,只要其共享对象接口相同,就可以直接动态加载...include   int dlclose(void * handle);   动态加载或多或少会占用一定的系统资源,比如内存等。...总结: 编译静态时先使用-c选项,再利用ar工具产生.编译动态的方式依不同版本的UNXI而定。隐式调用动态静态的用法相一致,而显示调用动态则需要借助动态加载共享库函数族。

    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】基础IO --- 软硬链接、acm时间、动静态制作、动静态链接、动静态加载原理…

    等到程序运行起来加载到内存变为进程的时候,将不再需要静态。...Linux 命令(61)—— ldd 命令(转载自csdn博主恋喵大鲤鱼的文章) 2. 所以gcc默认的动态链接只是一个建议选项,而究竟是动态链接还是静态链接,取决于提供的是动态还是静态。...Linux :ldconfig的使用介绍(转载自csdn博主技术探索者的文章) 2.3 在系统或当前路径,建立动态文件的软链接 1....静态不需要加载,在加载程序也就是编译链接时,系统就会将静态的代码拷贝到可执行程序的代码段里面,因为可执行程序中没有栈和堆段,只有代码段、数据段(可以细分为.data和.rodata段)和BSS段。...所以物理内存中,必定有静态的代码,因为静态的代码会作为可执行程序的一部分,加载到内存的虚拟地址空间中,然后通过页表映射到物理内存上,那么物理内存上就有静态代码的地址,这样的加载方案就是绝对编址的方案

    3.6K30

    LinuxQt创建共享与链接共享详解

    本次和大家分享的是在Ubuntu使用Qt生成共享以及在Qt中链接共享的方法。 共享是在Linux的称呼,在Windows被称为动态。...②类型选择默认的共享,填写名称并选择工程路径。简单说下的类型分别是动态静态Qt的插件 ? ③选择默认的套件即可 ④选择所需模块,这里我没有勾选任何模块 ?...object file: No such file or directory 加载共享时失败,没找到。...上面的错误是在运行时没有找到共享,在Linux,可以使用 ldd命令查看一个可执行程序所需的,效果如下: ? 2. 为什么在Qt中运行没有报上面的错误?...由于以前使用共享遇到过上面的问题,但是在刚刚测试共享的时候,为什么没有报错呢?是Qt将生成的共享放到Linux默认的搜索路径下了么?

    5.7K20

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

    当我们在linux系统引用动态时,经常会遇到一个问题,加入我们需要的动态没有在系统的默认目录下,我们编译时使用-L指定了动态的路径,编译时没有问题,但是执行调用该动态的可执行文件时,却提示找不到动态...library version %s\n”, TF_Version()); return 0; } 程序编译及结果如下: 可见程序编译没有问题,但是当执行可执行程序时,出现如下结果: 程序提示加载动态失败...,使用ldd命令查看一: 为什么我们编译的时候明明指定了动态的路径,而且程序编译的时候没有问题,执行的时候却找不到了呢?...解决办法,使用-Wl,-rpath 所需动态的路径 告诉程序如果在默认路径找不到所需动态,则去当前指定的路径找动态。...修改gcc编译指令后,结果如下: 可见,动态加载成功,程序运行成功,问题解决。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    11.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.4K30

    Linux】动静态

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

    8310

    linux动态静态

    http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/ Linux静态_的基本概念;如何生成静态动态...1.2、 的种类  linux 有两种:静态和共享(动态)。...libhello.so.1.0 hello.o 1.4、文件是如何命名的,有没有什么规范: 在 linux 文件一般放在/usr/lib和/lib静态的名字一般为libxxxx.a...在Linux,动态静态同事存在时,gcc/g++的链接程序,默认链接的动态。...linux系统的动态有两种使用方法:运行时动态链接,动态加载并在程序控制之下使用。 1、为什么在不停程序的情况,直接用 cp 命令替换程序使用的 so 文件,会使程序崩溃?

    12.4K20

    Linux静态和动态

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

    55410

    Linux静态和动态

    Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态静态 具体的动态静态的相关内容点击跳转 Linux一般分为动态静态静态(.a):文件以.a为后缀,程序在编译链接的时候把的代码链接到可执行文件中。...答案是无关的,接下来运行是和OS有关的,动态是运行时才加载的,所以程序运行起来,OS和shell也是需要知道是在哪里的!而我们自己制作的并没有在系统路径,OS无法找到!.../etc/ld.so.conf.d/,ldconfig更新 4.创建软链接 ---- 五、动静态加载 静态不需要加载静态把代码拷贝到可执行程序里,直接决定了当加载的时候在内存里代码和数据可能存在多份...而静态可能有多个程序用了C加载到内存时,内存里可能会存在100份重复的代码。而动态链接不会出现重复的代码,减少内存。

    28830

    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
    领券