Qt程序发布 ubuntu
2014-09-02 14:55
155 查看
文章来源:http://blog.sina.com.cn/s/blog_7783381f0100zmye.html(经过验证)
前两天写了个Qt程序,想试试发布一下,好让它能在没装Qt的机器上也能运行,折腾了好久,今天终于弄清楚了!
首先,我的系统是ubuntu 10.10,Qt版本为4.7。
第一步:cd到要发布程序目录下(.h,.cpp所在的文件夹),执行
make clean (撤销在此之前的编译)
qmake -config release (用release版编译,这样程序会小很多)
make
第二步:编辑.sh脚本文件。在该目录下新建一个和可执行文件同名的.sh文件(比如aa为可执行文件,则新建aa.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 $*
保存。
第三步:找出依赖库。要发布,首先要把可执行程序所依赖的库找出来,拷到可执行文件所在的目录下。在终端下cd到可执行程序目录,执行 ldd aa(aa为可执行文件名),即可看到列出的一大段依赖库(.so文件)。接下来,什么都别想,一个一个把它们找出来,一个都不能少!(纯属体力活,不知道有没有简单点的办法……)。
特别注意:ldd列出来的都是共享库的链接,你查找的时候会发现文件的右上角都有个黑色箭头,同时,找出来的还不止一个文件,如下图:
这些带箭头的都是链接文件,它们都指向一个共享库(右键上图第一个文件,从属性可以看到它指向libQtCore.so.4.7.0).保险起见,把这三个都拷进去!
完成上面的体力活后,我们接下来就是用U盘把程序拷到别的机器上去运行了。这里问题又来了,你会发现复制时出错,提示:“复制libQtCore.so.4时出错“,”文件系统不支持符号链接“。这时候,解决方法有两个:
1、把程序压缩打包,然后复制过去
2、将共享库重命名为链接的名称。以上图中为例,将libQtCore.so.4.7.0重命名为:libQtCore.so.4,然后复制过去,带箭头的两个就不要了。
现在,大功告成,你可以运行你写的程序了。切换为root身份,cd到程序目录下,执行:
./aa.sh(aa为可执行文件名称),可能你会碰到无法执行的问题,这时,执行:
chmod +x aa.sh就行了。
前两天写了个Qt程序,想试试发布一下,好让它能在没装Qt的机器上也能运行,折腾了好久,今天终于弄清楚了!
首先,我的系统是ubuntu 10.10,Qt版本为4.7。
第一步:cd到要发布程序目录下(.h,.cpp所在的文件夹),执行
make clean (撤销在此之前的编译)
qmake -config release (用release版编译,这样程序会小很多)
make
第二步:编辑.sh脚本文件。在该目录下新建一个和可执行文件同名的.sh文件(比如aa为可执行文件,则新建aa.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 $*
保存。
第三步:找出依赖库。要发布,首先要把可执行程序所依赖的库找出来,拷到可执行文件所在的目录下。在终端下cd到可执行程序目录,执行 ldd aa(aa为可执行文件名),即可看到列出的一大段依赖库(.so文件)。接下来,什么都别想,一个一个把它们找出来,一个都不能少!(纯属体力活,不知道有没有简单点的办法……)。
特别注意:ldd列出来的都是共享库的链接,你查找的时候会发现文件的右上角都有个黑色箭头,同时,找出来的还不止一个文件,如下图:
这些带箭头的都是链接文件,它们都指向一个共享库(右键上图第一个文件,从属性可以看到它指向libQtCore.so.4.7.0).保险起见,把这三个都拷进去!
完成上面的体力活后,我们接下来就是用U盘把程序拷到别的机器上去运行了。这里问题又来了,你会发现复制时出错,提示:“复制libQtCore.so.4时出错“,”文件系统不支持符号链接“。这时候,解决方法有两个:
1、把程序压缩打包,然后复制过去
2、将共享库重命名为链接的名称。以上图中为例,将libQtCore.so.4.7.0重命名为:libQtCore.so.4,然后复制过去,带箭头的两个就不要了。
现在,大功告成,你可以运行你写的程序了。切换为root身份,cd到程序目录下,执行:
./aa.sh(aa为可执行文件名称),可能你会碰到无法执行的问题,这时,执行:
chmod +x aa.sh就行了。
相关文章推荐
- ubuntu qt程序发布到其他机子运行
- linux (ubuntu) Qt 5.9.1 发布程序 转载+个人错误记录
- QT的插件机制在程序发布时易出现的问题
- 关于在windows下部署发布QT程序的总结
- Linux下如何发布Qt程序[转]
- X11/Linux下发布Qt程序(Deploying Qt Applications for X11/Linux)
- Qt程序在win下简单打包发布
- 发布中文Qt程序时要注意的问题(收藏自http://blog.csdn.net/tonylk/archive/2008/03/15/2185811.aspx)
- X11/Linux下发布Qt程序(Deploying Qt Applications for X11/Linux)
- X11/Linux下发布Qt程序(Deploying Qt Applications for X11/Linux)
- 发布qt程序发现中文乱码图片变没有变成黑色
- QT程序发布的一个问题:无法定位程序输入点与动态链接库QtCore4.dll
- 发布中文Qt程序时要注意的问题
- 关于在windows下部署发布QT程序的总结
- qt 程序发布以及中文翻译的方法
- QT程序发布的一个问题与解决方案
- Qt 发布程序
- 发布的QT程序无法显示图标和图片的问题
- qt 编写的webkit程序发布的时候如何正确显示中文。
- qt 程序windows 上发布