分享

Qt开发者专区

 chayic 2013-07-10

如何在X11部署Qt應用程式

发表时间:2010-06-04


本文件將帶領各位如何在X11環境上部署你寫好的Qt應用程式。


[編輯] 動態連結

若你是直些下載binary來安裝Qt,函式庫預設就是共享函式庫,你寫的Qt程式都是動態連結到Qt的函式庫。

接著就開始部署的動作了,其實動態連結的部分跟在Windows大同小異。

首先你到應用程式的目錄,接著要產生新的Makefile,然後build出動態連結的可執行檔:

make clean
qmake -config release
make

接著,你會發現就會build出一個可執行檔,由於Qt預設就是使用動態連結函式庫,所以上面的第二道指令其實下qmake結果也一樣。

接下來的動作與Windows一樣,需要把會用到Qt函式庫複製來使用,因為我只是寫一個簡單的Hello_World小程式,所以只會用到以下的函式庫檔:

  • libQqCore.so.4L
  • libQtGui.so.4


但與Windows不同的是要讓系統連結到這些函式庫的方式,在Windows只要把那些函式庫放在可執行檔相同的目錄即可,但Linux上可就不太一樣了。我參考線上文件的說明,其實有3種方法可以讓執行檔找到那些函式庫(只列2種),分別是:

  • 直接把函式庫丟到系統函式庫路徑(通常是/usr/lib下即可),但此法需要有root權限
  • 撰寫一個script來啟動程式,而這個script會修改dynamic linker設定(例如加入應用程式的目錄到LD_LIBRARY_PATH環境變數)

因此,我仿效線上文件新增了一個.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 $*


接著只要執行這個script檔就可以成功執行程式囉。



[編輯] 靜態連結

如果要靜態連結函式庫的話,就會需要比較多步驟,而且也比較花時間哦。

你也要跟在Windows一樣靜態編譯(static build) Qt,做法如下:

首先,至Qt Software官方網站下載Qt的原始碼

接著開始build Qt囉。要static build Qt,首先到Qt目錄下執行下列指令:

cd /path/to/Qt
./configure -static -prefix /path/to/Qt
make sub-src

第一道指令會產生出Makefile檔,會花費些許時間,而第二道指令則是開始build,則會花費相當多時間,以我來說,估計差不多要1~2兩時左右。

另外,使用-prefix是設定你自行build的Qt要擺在哪裡(因為你有可能安裝多個版本Qt),而上述只有build Qt的函式庫而已,所以像是一些範例或是Qt Designer都沒有build哦。

當make完成之後(很久之後),把build完的Qt放到/path/to/Qt即可。

接著到你寫好的Qt程式開始重新編譯,指令如下:

make clean
PATH=/path/to/Qt/bin:$PATH
export PATH
export QMAKESPEC=linux-g++ (or set env QMAKESPEC linux-g++)
qmake -config release
make

之後產生出來的執行檔會驚人的大,我寫的一個簡單Hello_World小程式,竟然就要10mb左右。

原文链接:http://wiki./index.php/Qt_Deploying_Qt_Applications_X11

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多