-
目的
操作步骤
规范X11(即Linux)下Qt发布应用程序中子类(子部分)测试,方便阅读、学习及交流。
使用操作系统为Ubuntu 10.04版本。
-
再X11平台下发布QT程序
-
当然,先写好应用程序,准备好需要使用的资源,如库lib和插件plugins。
-
以计算器extcalc为例,找到extcalc所使用的那些libQt*.so.4共享库(无需链接!),放在同一个目录下。(可以不同,修改shell脚本即可。
可以使用ldd extcalc查看。
-
编写extcalc.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 $*
保存文件,使用chmod + x extcalc.sh附加执行权限。(若要调试,可使用sh -x extcalc.sh。
-
关于plugins,推荐使用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
附录
遇到的问题:我想很多人都遇到这样一个问题,却在网上搜索答案,看过无数的英文贴,有说ubuntu10.4 bug的,还有些其他,根本与本发布实现无关。。(答案差之千里,但还是感谢论坛的能人志士,犹如我在xchat上提问,回答我的那些前辈,我的英语也在努力前进(全英文交流,真的表达不清
问题情况概述:当你拿好上述一切,去到另一台电脑前,例如其他版本的Linux,如我是在ubuntu 10.04下编译的,而我现在去fedora、opensuse、debian或者其他,可能遇到这样的问题:
/home/rainchou/Desktop/T/Maskshot_manager/./Maskshot_manager: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by /home/rainchou/Desktop/T/Maskshot_manager/./libQtGui.so.4)
/home/rainchou/Desktop/T/Maskshot_manager/./Maskshot_manager: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by /home/rainchou/Desktop/T/Maskshot_manager/./libQtGui.so.4)
/home/rainchou/Desktop/T/Maskshot_manager/./Maskshot_manager: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by /home/rainchou/Desktop/T/Maskshot_manager/./libQtCore.so.4)
其实解决办法很简单,不是应用程序的问题,而是你的Qt库不对,请另外找吧。(怎么找,这个我还真是不好说,因为我所解决的这个问题,引发并发现了整个项目组的Qt库都不能用,只有服务器的可以,真是奇怪啊