Linux/Ubuntu下 静态编译Qt程序
2014-08-12 14:07
218 查看
项目需要,原来在windows平台动态编译程序,使用NSIS脚本,找到动态链接库,再使用打包软件,打包即可发布。现在平台转到了Ubuntu,动态编译的话需要ldd XXX(可执行程序),将所需要的动态库打包。觉得麻烦,不如直接静态编译类库,再用静态库编译即可一劳永逸。
一[b]、静态编译与动态编译的区别[/b]
动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。、
静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。
[b][b]二、[/b]一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的。会提示缺少……库文件之类的错误。这就是动态编译的结果。但是如果我们想编译一个程序,这个程序在发给别人后,他们可以直接打开,而不需要特别地去先安装Qt库,那就需要采用静态编译了。在Linux下如何静态编译Qt程序呢?[/b]
1、下载源安装程序,如 qt-everywhere-src-4.8.3.tar.gz
2、解压到某一目录
3、cd 进入解压后的目录,命令:
./configure -static -release -qt-zlib -qt-gif -qt-libpng-qt-libmng -qt-libjpeg -nomake demos -nomake examples-qt-sql-sqlite -prefix/usr/local/Nokia/Qt-4.8.3_static
参数-static 指的是要采用静态编译Qt的方法
参数-release指的是只编译release版本的库
参数-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg是更好确定Qt编译出的程序能在目前不知的系统下运行。
参数-nomake demos -nomake examples 指的是不编译demos和examples
参数-qt-sql-sqlite 如果没有这个参数,configure的时候,可能会提示sqlite 有问题而中止。
参数 -prefix /usr/local/Nokia/Qt-4.8.3_static指明静态编译的Qt安装的目录,命名Nokia/Qt-4.8.3_static是为了区别动态编译安装的Qt,因为如果没有这个参数,安装时会覆盖之前动态编译安装的Qt(如果有的话)。
4、没问题后
make
5、make没问题后再
sudo make install
6、增加(或改变)环境变量:
在你home目录下你的的名字的目录中,在.profile文件中追加(或改变)如下环境变量:(为Qt设置一些特定的环境变量,这个很重要!.profile文件是隐藏的,可在你的名字目录下,按Ctrl+H显示所有文件查看到)
QTDIR=/usr/local/Nokia/Qt-4.7.3_static/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATHLD_LIBRARY_PATH
QTDIR=/usr/local/Trolltech/Qt-4.5.1_static/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATHLD_LIBRARY_PATH
7、重启,在QtCreator中配置编译器,Kit即可。
8、在终端测试一下qmake
成功的话,下来用qmake编译出的Qt程序就是采用静态编译的。这时你会发现,静态编译出来的程序大小变大了相当多。
一[b]、静态编译与动态编译的区别[/b]
动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。、
静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。
[b][b]二、[/b]一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的。会提示缺少……库文件之类的错误。这就是动态编译的结果。但是如果我们想编译一个程序,这个程序在发给别人后,他们可以直接打开,而不需要特别地去先安装Qt库,那就需要采用静态编译了。在Linux下如何静态编译Qt程序呢?[/b]
[b]首先需要先安装静态编译的Qt,也就是静态编译Qt程序首先是需要一个静态编译安装的Qt[/b] |
2、解压到某一目录
3、cd 进入解压后的目录,命令:
./configure -static -release -qt-zlib -qt-gif -qt-libpng-qt-libmng -qt-libjpeg -nomake demos -nomake examples-qt-sql-sqlite -prefix/usr/local/Nokia/Qt-4.8.3_static
参数-static 指的是要采用静态编译Qt的方法
参数-release指的是只编译release版本的库
参数-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg是更好确定Qt编译出的程序能在目前不知的系统下运行。
参数-nomake demos -nomake examples 指的是不编译demos和examples
参数-qt-sql-sqlite 如果没有这个参数,configure的时候,可能会提示sqlite 有问题而中止。
参数 -prefix /usr/local/Nokia/Qt-4.8.3_static指明静态编译的Qt安装的目录,命名Nokia/Qt-4.8.3_static是为了区别动态编译安装的Qt,因为如果没有这个参数,安装时会覆盖之前动态编译安装的Qt(如果有的话)。
4、没问题后
make
5、make没问题后再
sudo make install
6、增加(或改变)环境变量:
在你home目录下你的的名字的目录中,在.profile文件中追加(或改变)如下环境变量:(为Qt设置一些特定的环境变量,这个很重要!.profile文件是隐藏的,可在你的名字目录下,按Ctrl+H显示所有文件查看到)
QTDIR=/usr/local/Nokia/Qt-4.7.3_static/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATHLD_LIBRARY_PATH
QTDIR=/usr/local/Trolltech/Qt-4.5.1_static/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATHLD_LIBRARY_PATH
7、重启,在QtCreator中配置编译器,Kit即可。
8、在终端测试一下qmake
成功的话,下来用qmake编译出的Qt程序就是采用静态编译的。这时你会发现,静态编译出来的程序大小变大了相当多。
相关文章推荐
- Linux/Ubuntu下 静态编译Qt程序
- Linux/Ubuntu下 静态编译Qt程序
- VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- 使用VC2005编译真正的静态Qt程序
- Windows下编译静态Qt程序
- VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- 使用Vs2005 VS2008编译真正的静态Qt程序
- 使用VC2005编译真正的静态Qt程序-Qt中文论坛-夏威夷雪人
- VS2008纯静态编译QT4.8.0,实现VS2008编译调试Qt程序,QtCreator静态发布程序
- ubuntu下交叉编译QT程序完整流程
- QT+MinGW在windows中静态编译程序
- Linux/Ubuntu下 静态编译Qt程序
- VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- Linux/ubuntu下编译安装QT 4.8 (QT 4.8.4)
- VS2012中使用编译的Qt-5.1.1静态库开发程序
- Linux 下 静态编译Qt程序
- (原创)亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
- [转载]QT+MinGW在windows中静态编译程序
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序