阿呆游乐园 https://bbs.21ic.com/?645097 [收藏] [复制] [RSS] 所谓的技术只不过是游戏的借口,或许阿呆真的呆了,以至于知识只是在游戏的水平上;无所谓啦,生活本是游戏,傻傻的享受生活,岂能被生活所扰。

日志

QT程序在windows和linux下的发布(转)

已有 2370 次阅读2012-3-4 15:31 |个人分类:Qt系列|系统分类:嵌入式系统| qt, 发布

Windows下:


第一种,静态编译: 




mingw平台静态编译,在编译Qt的时候,有个configure.exe程序,



configure.exe -static -platform win32-g++



可以产生静态编译项目文件。然后,



mingw32-make sub-src



就可以编译出静态库。如果只是用来分发程序,也可以mingw32-make release sub-src只编译一个静态库。


第二种 动态编译:


可执行文件 与 需要的动态库放到同一个文件夹下,一般需要



  • myprogram.exe

  • mingwm10.dll

  • libgcc_s_dw2-1.dll

  • qtcore4.dll

  • qtgui4.dll

有同学抱怨,动态库拷过去以后,程序报错 无法定位程序输入点于动态链接库QtCore4.dll ,这一般是由于系统中装了多套Qt的运行库,而你拷贝的不是Qt安装目录下的库所导致的。比如,当安装的是Qt SDK时,很容易导致这个问题,因为里面的Qtmingw编译的,但里面的QtCreatormsvc编译的,所以不少人不小心就吧QtCreator带的Qt运行库拷过来了。


如果你不需要其他的插件,那么就可以发布程序了,然而不少同学抱怨 jpggifbmp 等格式的图片无法显示,这是因为 Qt 原生支持 png,而其他格式需要通过插件支持(插件在 %QTDIR%/plugins\imageformats 目录下)


你只需将需要的插件拷贝到可执行程序所在的目录下的 imageformats 目录下即可



  • myprogram.exe

  • imageformats\qjpeg4.dll

  • imageformats\qgif4.dll

  • ...

同样,如果你的程序需要gb2312gbk编码支持,那么需要将 %QTDIR%\plugins\codecs 目录下的相应插件拷贝到可执行程序所在目录下的 codecs 目录下



  • myprogram.exe

  • codecs\qcncodecs4.dll

Linux下:


在panel.sh中语句:






#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname $*

保存文件,退出.在终端给文件+x属性: 切换到程序的目录,输入

chmod +x panel.sh

然后运行shell文件就行了(确保panel程序具备X属性),它会自动更改环境变量,运行程序.

如果要调试shell文件,只需要在终端输入:

sh -x panel.sh

这样就ok了.


关于plugins,有以下3种处理方法:

# Using qt.conf. This is the recommended approach since it provides the most flexibility.

# Using QApplication::addLibraryPath() or QApplication::setLibraryPaths().

# Using a third party installation utility or the target system's package manager to change the hard-coded paths in theQtCore library.


第二种方法很简单。qt.conf的方法也不错.看看这个:






Entry Default Value 
Prefix QCoreApplication::applicationDirPath()
Documentation doc
Headers include
Libraries lib
Binaries bin
Plugins plugins
Data .
Translations translations
Settings .
Examples .
Demos .

最简单的qt.conf文件這樣寫就好了:(插件在当前文件夹下的plugins文件夹里)







[Paths]
Prefix = .
Plugins = plugins

 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)