linux下快速静态编译qt

linux下快速静态编译qt

ID:8799868

大小:32.00 KB

页数:3页

时间:2018-04-08

linux下快速静态编译qt_第1页
linux下快速静态编译qt_第2页
linux下快速静态编译qt_第3页
资源描述:

《linux下快速静态编译qt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux下快速静态编译QtQt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12~13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了40分钟编译完成了全部内容。如果你直接使用官方的sdk安装,那么你就已经有了一个动态库,现在你又通过源码包编译,那么只要编译出静态库,

2、因为你已经有动态库,你甚至只需要编译静态release库就足够了,谁会在平时编译的时候就要用那种浪费时间的静态编译?等到产品要部署到别的机器的时候,Qt需要用的时候连接上就可以了,这样其它的内容,如动态库的demo,examples都依旧可用,安装两个版本又不会花太多时间,岂不两全其美?长话短说,现在说安装步骤。1. 到网上下载qt-everywhere源码包,如果你只要库,那么你也可以到下面的网址找到你需要的版本。http://www.qtcn.org/bbs/read.php?tid=10752. 解压缩到你的目标目录3. 通过configure选择

3、要编译的部分。   你可以通过直接修改configure文件中的QT_DEFAULT_BUILD_PARTS="libstoolsexamplesdemosdocstranslations",把examples,docs,demos都去掉(我只去掉了这三个,理论上如果安装了动态版本,tools和translations(这个是linguist要用的)也是可以去掉的。你也可以通过在最终的configure指令中加入–no-make***(这里就是刚才提到的PARTS名字),而无需修改configure文件  还有一些选项是默认的,你也可以指定选项。这些默认

4、选项在大部分情况下都是没问题的,可是如果你的程序要部署到某些不确定的linux系统上,譬如有的系统连jpg,png的库都没有(这些在configure默认选项中使用的是系统库,如果系统没有这些库,岂不悲剧),那么你可以加入–qt-gif -qt-libpng–qt-libmng–qt-libjpeg几个选项。  如果你决定只用静态库来做最终产品发布,那么你没有必要编译debug库,只需要编译release即可。4. 使用configure生成makefile  因为你不但想用自己编译的静态库,你还想能够用sdk自动安装的动态库以及那些demos,exam

5、ples,为了能让两个Qt库共存,configure时必须为静态库制定一个与动态库所在位置不同的文件夹,例如我的sdk安装到 /opt/qtsdk-2010.05/下,那么我就在/opt下建立了一个叫qtstatic的文件夹来存放静态库,然后使用的configure命令:./configure–prefix/opt/qtstatic–static–release。当然,我不喜欢看到满屏乱七八糟的输出,以及因为一个小错误突然终止了编译,所以又指定了以下选项:-continue  当发生错误时,尽可能继续编译-silent 进行make时只会显示警告和错误等

6、,不会把编译指令也输出到屏幕上当然,如果你最初没有通过修改configure文件的方式来删减编译模块,不要忘记加上-nomake选项,譬如你不想编译examples,就可以加上:-nomakeexamples  ,依次类推因为工程比较大,所以这个步骤可能会花费几分钟的时间。如果你指定编译的内容不是很多,应该可以很快完成。5. 编译和安装  最后当然就是make和makeinstall了,不过不要忘了make还有多线程编译的功能哟!如果你的机器这段时间不打算做别的事情的话,完全可以加入以下选项:-k  当发生错误时,尽可能继续编译-jN  同时进行N项编译

7、,建议N的值为你的CPU核数X1.5。当然,我选的值略微狠了点,我的电脑是奔腾双核T4300,make指令为: make–k–j4    ,然后我就看到系统监视器里CPU直接飙到100%了。编译完成,makeinstall就可以。当然,作为linux系统,需要注意文件夹的权限问题……呃,如果你不了解这个问题,我想你需要在linux上多下点儿功夫6. 如何静态编译一个程序  在pro文件中,加入   CONFIG+=static或者  CONFIG+=staticlib,这个具体取决于你的工程类型了。  这样Qt就会让编译器尽量寻找静态库来连接(包括Qt库

8、之外的那些库),当然,这不排除Qt会静态连接一些会导致兼容性问题的库。这个在Qt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。