QT creator 編譯執行檔問題

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

QT creator 編譯執行檔問題

文章rjlin » 週四 9月 23, 2010 2:58 pm

大家好
我是正在學習QT的新手,目前遇到一個問題是要如何才能編譯一個獨立的執行檔
也就是能在沒有安裝qt的編譯環境下也可以執行的程式呢?

我使用的版本是 qt-sdk-linux-x86-opensource-2010.04.bin裝載在ubuntu 10.04上
依照其指示
1. chmod u+x qt-sdk-linux-x86-opensource-2010.04.bin
2../qt-sdk-linux-x86-opensource-2010.04.bin
3. 出現視窗的安裝畫面(依照其預設路境安裝完成,在/opt/下會多一個qtsdk-2010.04的資料夾)
4.開啟QtCreator產生一個只有window的project, 選擇編譯release, 會在指定的release資料夾裡產生一些xxx.o,moc_xxx.cpp, Makefile, 與一個可執行檔
5.我將此執行檔複製到另一個沒有安裝qt sdk 或framework的ubuntu 10.04下執行,卻無法執行

我在網路上有搜尋過許多相關的方法
大部份都是要手動編譯qt
a. ./configure -static -option.....
b. make
c. make install
我曾編譯出一個很大的可執行檔, 但是複製到沒有安裝qt的環境下卻仍無法執行
請問要如何才可以編譯出一個可單獨執行的程式呢?
謝謝大家幫忙解答困擾我很久的問題
rjlin
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週四 9月 23, 2010 2:43 pm

Re: QT creator 編譯執行檔問題

文章訪客 » 週日 9月 26, 2010 6:56 pm

我在本機電腦直接執行執行檔就會出現缺少dll的訊息,後來看了一篇文章,說在.pro加上"CONFIG += static",結果還是無法執行,後來我就看缺少那些dll檔,就直接複製C:\Qt\2010.XX\qt\bin裡的dll檔到執行檔的相同目錄底下即可執行,以下有一些討論也可參考
http://www.qtcentre.org/forums/5-Instal ... Deployment
http://doc.trolltech.com/4.3/deployment.html
訪客
 

Re: QT creator 編譯執行檔問題

文章rjlin » 週日 9月 26, 2010 7:56 pm

在window上我也有遇到類似的問題, 我的解法跟你類似,把所缺少的dll檔直接複製一份到我的執行檔的資料夾內, 在另一台完全沒有安裝QT的XP上是可以執行的.

但我現在的問題是在linux的平台上該要如何解決呢?
參考了 網路上很多的做法
都是要重新編譯source code
我也照著做過 但卻還是無法產生獨立的執行檔~~
rjlin
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週四 9月 23, 2010 2:43 pm

Re: QT creator 編譯執行檔問題

文章訪客 » 週二 9月 28, 2010 10:26 am

我對linux下動態函式庫的運作不怎麼瞭解

windows下把dll放在跟執行檔同一個目錄就可以了

另一個作法是將qt編譯成靜態連結版本
訪客
 

Re: QT creator 編譯執行檔問題

文章rjlin » 週五 10月 01, 2010 2:40 pm

今天搜尋了一些對岸的網站
http://qt.csdn.net/articles.aspx?pointid=448&pointid2=
裡面有指導該如何編譯靜態與動態連結的方法
看來 果然要照這樣的步驟才可以產生獨立執行檔
我試了一下 動態連結的方式
因為我是安裝SDK的binary file.所以其lib已經是share library
因此可以省略產生動態qt函式庫的步驟

我的步驟是
1.用qt creator產生release的檔案(此程式只會產生一個window)
2.依照網站的方法產生一個script file
#!/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 $*

3.將相關的qt shared lib都抓到同一個資料夾中
4.覆製到一個沒有安裝qt lib的ubuntu下
5.使用termial 執行script file , 成功產生視窗

到此算是解決我一半的問題, 另一半是如何產生可獨立執行的程式
不過我發現為何在linux上的qt lib檔案大小會比在window上的qt lib要大上許多
難怪許多人會說 明明是一個很簡單的qt程式居然要好幾十mb
有辦法瘦身嗎?

另外是否可以在ubuntu上執行embedded QT的程式呢?

以上~~
rjlin
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週四 9月 23, 2010 2:43 pm


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客