㈠ 用qt怎麼編譯一個c程序
qt幾?用gcc編譯。不過要用qt的工具先生成Makefile文件。一般是qt里自帶的qmake工具。首先先寫好cpp和頭文件,在當前目錄下依次執行qmake -project,qmake,make即可編譯。
㈡ ubuntu下qt如何編譯.ui文件
登錄/注冊
linux/Ubuntu下 靜態編譯Qt程序
轉載205 閱讀
mb5ff5917b5bbc5
2017-07-28 07:07:00
關注
一般情況下,我們用Qt編譯出來的程序是要依賴於系統Qt庫的,也就是這個程序移到別的沒有安裝Qt庫的系統上是不能使用的。會提示缺少……庫文件之類的錯誤。這就是動態編譯的結果。
但是如果我們想編譯一個程序,這個程序在發給別人後,他們可以直接打開,而不需要特別地去先安裝Qt庫,那就需要採用靜態編譯了。
在Linux下如何靜態編譯Qt程序呢?
首先需要先安裝靜態編譯的Qt,也就是靜態編譯Qt程序首先是需要一個靜態編譯安裝的Qt
1、下載源安裝程序,如 qt-x11-opensource-src-4.5.1.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/Trolltech/Qt-4.5.1_static
./configure -static -release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -nomake demos -nomake examples -qt-sql-sqlite -prefix /usr/local/Trolltech/Qt-4.5.1_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/Trolltech/Qt-4.5.1_static 指明靜態編譯的Qt安裝的目錄,命名Qt-4.5.1_static是為了區別動態編譯安裝的Qt,因為如果沒有這個參數,安裝時會覆蓋之前動態編譯安裝的Qt(如果有的話)。
4、沒問題後
make
5、make沒問題後再
sudo make install
6、增加(或改變)環境變數:
在你home目錄下你的的名字的目錄中,在.profile文件中追加(或改變)如下環境變數:(為Qt設置一些特定的環境變數,這個很重要!.profile文件是隱藏的,可在你的名字目錄下,按Ctrl+H顯示所有文件查看到)
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 MANPATH LD_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 MANPATH LD_LIBRARY_PATH
7、重啟
8、在終端測試一下qmake
成功的話,下來用qmake編譯出的Qt程序就是採用靜態編譯的。這時你會發現,靜態編譯出來的程序大小變大了相當多。
靜態編譯與動態編譯的區別
動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。缺點一是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個相對龐大的鏈接庫;二是如果其他計算機上沒有安裝對應的運行庫,則用動態編譯的可執行文件就不能運行。、
靜態編譯就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴於動態鏈接庫。所以其優缺點與動態編譯的可執行文件正好互補。
㈢ qt編譯無法由.o文件生成.exe
qt編譯無法由o文件生成exe的解決方案一般來說就是更換一個編碼技術的工具,在文件無法生成的時候,選擇新的編譯程序設計基礎理論和應用,就可以實現了。
㈣ QT中怎麼靜態編譯,靜態編譯的步驟是什麼。
Qt採用編譯的方式安裝的時候,配置中默認的編譯方式是動態編譯的,但是有時候你編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯你的程序,Qt要實現靜態編譯必須庫文件也是靜態編譯的,所以在此介紹一下qt如何來進行靜態編譯第一步:下載源碼包Qt/X11版本:qt-x11-opensource-src-4.5.2.tar.gz第二步:解壓縮tarzxvfqt-x11-opensource-src-4.5.2.tar.gz第三步:進入到剛才解壓縮後的文件夾下並進行配置,如下./configure-release-platformwin32-msvc2008-static-nomakeexamples-nomakedemos-no-qt3support-no-scrip
...
by
fengyetang
2010-07-04
回復
(0)
㈤ QT交叉編譯環境
將安裝全套的Qt開發環境,可以在PC端進行qt開發。
Ubuntu14.04的Qt版本為5.2.1,16.04的Qt版本為5.5.1,高版本Qt庫可以向下兼容運行低版本工具鏈編譯的程序,因此這里選用5.2.1版本作為編譯工具鏈。
進入Qt工程目錄中,目錄下會有個<工程名>.pro文件,如果目錄中存在<工程名>.pro.user文件,是之前qtcreator生成的配置文件,請先刪除。然後運行:
即可完成編譯,編譯好的程序可以放到樹莓派上直接運行。
另外,工程的配置可以通過修改 工程名.pro文件,例如添加鏈接庫,只需要在文件中添加如下選項:
添加c99支持:QMAKE_CFLAGS += -std=c99
㈥ 如何編譯arm上運行的qt2可執行文件
編譯好的QT的程序,一般會有幾個.CPP\.h文件,這么多的文件我們要怎麼樣編譯。首先,我們需要安裝QT版本的庫,一定要注意,這個庫文件一定和開發板上的是同一個庫。我們假設這個庫名字叫qtembed450-arm。以下步驟一定要注意:
1.安裝目錄一定要在「/usr/local/」下;
2.安裝成功後,這步非常關鍵,一定要設置環境變數,而且,我們要設置三個環境變數,這樣做有三個目的:①可以在任何路徑下用庫里的命令②編譯時候可以指定編譯規則為arm-linux-g++③編譯時候可以指定到所需要的庫文件。那麼安裝後,輸入一下命令:gedit /root/.bashrc.這個命令執行後就進入到設置環境變數的地方,我們要加入以下三個環境變數的設置:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default
以上設置非常的重要,非常的關鍵。呵呵,先照著設置,具體原因我會細談。注意,我編譯用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以打開看看哦!環境變數設置好後,用which qmake-arm 命令來確認下是否成功,呵呵。
3.准備工作做到這里,算是進行一半了,哎,真累啊!還要接著寫呢。接下來我們要把我們的編譯好的QT程序的文件夾打開,把裡面的 .CPP/.h文件拷貝出來,新建立一個文件夾;
4.把以上的文件里的.cpp .h文件復制後新建立一個文件夾。
5.新文件夾建立後,在linux終端中進入到該文件夾所在目錄下,執行這個命令:qmake-arm -project命令,千萬注意,-project 和arm之間一定要有空格啊!該命令執行後,會生成一個.pro文件,緊接著呢,執行qmake-arm命令,該命令執行後呢,會生成一個Makefile文件,這步很關鍵哦,沒有這步就不會有Makefile文件,一般在這步會出現很多錯誤,就是庫沒有發現之類,這個時候,一定要檢查前面的步驟,仔細檢查看是否是錯誤。我們這個時候打開Makefile文件看一下,會發現,裡面的編譯已經變成arm-linux-g++。這個時候,就踏實,接下來怎麼辦?還用問嗎,直接make下就好了,哈哈,簡單吧!看到上面的qtmyjpg文件了嗎?這個是可以在開發板上運行的哦!接下來不用我說了吧,直接發送到開發板上執行,可以看到圖片嘍!
6.下到開發板上之後呢,通常會發現沒有許可權,執行chmod +x qtmyjpg 就可以了,但是注意,要執行這個qtmyjpg文件,一定要這樣輸入命令:./qtmyjpg -qws為什麼需要加這個參數呢?很簡單,你不加執行時會出現錯誤原因,自己看下吧,哈哈!
7.一般這個時候觸摸屏需要矯正。進入「/usr/tslib/bin/」,查看裡面的文件,有一個「ts-calibrate」文件,執行這個文件,./ts-calibrate 後,可以看到LCD屏幕上出現十字點,用觸摸筆點一下就可以,至此,整個QT在LCD上顯示整理完畢,花了我半下午時間加上對曹老師的請教,終於完成,嘿嘿!趕緊試試哦!
㈦ qt編譯報錯後不斷編譯就會成功
qt編譯報錯後不斷編譯可能會成功。重啟qt,編譯程序會繼續報錯,此時,只需要將對應的cl.exe和cldll.dll拷貝到vc14目錄下可能會成功,錯後不斷編譯,找准相應的方式與方法總會成功的。
㈧ linux下執行qt程序怎麼編譯運行
qmake -project? 已經有.pro文件了! 直接運行qmake或者qmake snake.pro或qmake -makefile snake.pro.
重新解壓,按以下步驟做:
$ qmake
$ make
找到可執行文件(不是.o, 沒後綴的), 一般如果snake.pro中沒設置TARGET,默認生成的可執行文件為snake,輸入
.$ /snake
㈨ QT 5.5.0 怎麼設置才能實現靜態編譯
qt默認的編譯方式是動態編譯的,但是有時候編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯程序,qt要實現靜態編譯必須庫文件也是靜態編譯的,可以用這個命令編譯靜態庫:
1.將c:\qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的qmake_lflags
=
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
改為
qmake_lflags
=
-static
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
2.在開始菜單里找到qt
command
prompt並運行,輸入命令:
configure
-static
-debug-and-release
-no-exceptions
-l
"c:\qt\2010.05\qt\include"
-l
"c:\qt\2010.05\qt\lib"
-l指定一下路徑,防止用到vc的頭文
㈩ Qt下如何編譯庫
一般分為動態庫和靜態庫,方法分別如下:
一.
靜態庫的生成
1.
測試目錄:
lib
2.
源碼文件名:
mywindow.h,
mywindow.cpp
3.
編寫項目文件:
mywindow.pro
注意兩點:
TEMPLATE
=
lib
CONFIG
+=
staticlib
4.
生成Makefile:
qmake
mywindow.pro
5.
編譯生成靜態庫libmywindow.a
make
二.
靜態庫的使用
1.
測試目錄:
test
2.
將mywindow.h與libmywindow.a拷貝至test目錄下
3.
編寫main.cpp,
包含頭文件mywindow.h,
並調用MyWindow類
4.
編寫項目文件:
test.pro
注意加上庫路徑與庫文件名:
LIBS
+=
-L
./
-lmywindow
5.
生成Makefile:
qmake
test.pro
6.
編譯:
make
7.
運行:
./test
三.
動態庫的生成
動態庫編譯基本和靜態庫類似,需要將上述將要進行編譯的項目文件.pro中下面這行去掉
CONFIG
+=
staticlib
按上述操作編譯完後就可以得到以lib開頭並且.so*
結尾動態庫文件,一般有多個。