linux下編譯qt
A. 為什麼linux下Qt程序編譯時找不到mkspecs for QMAKESPEC
要定義環境變數 QMAKESPEC.
例如,如果你用gcc編譯器的話,令QMAKESPEC=linux-g++ 當然還要區分32位系統和64位系統,到你的QT目錄下找到mkspecs目錄,找到適合你系統的QMAKESPEC.
如果沒有該目錄,重新下載安裝QT吧。
B. linux下如何運行qt程序
在Linux環境下運行Qt程序,首先需要安裝必要的軟體和庫。對於圖形界面,可以直接下載並安裝Qt Creator,以及libqt4-dev和qt5default-dev,前者是用於開發的集成環境,而後者是庫文件,用於支持Qt應用的運行。如果環境是命令行模式,且沒有圖形界面,想要運行對話框程序,需要通過qmake和make命令來編譯源代碼。具體步驟包括:
1. 使用qmake生成Makefile,命令為:qmake -project
2. 使用make編譯源代碼,命令為:make
3. 編譯完成後,會生成可執行文件,可以直接運行,命令為:./程序名
如果遇到許可權問題,需要先給可執行文件加上執行許可權,命令為:chmod +x 程序名
此外,還需要注意一點,對於某些特定的Qt應用,可能還需要安裝對應的Qt模塊,例如Qt Widgets模塊,可以通過以下命令安裝:
sudo apt-get install qt5-default
以上就是在Linux環境下運行Qt程序的基本步驟,包括安裝依賴、編譯源代碼以及運行程序。對於命令行模式,這種方式特別有用,因為不依賴於圖形界面,可以在任何終端環境中運行。
C. Linux上靜態編譯Qt應用實現方案linux靜態編譯qt
隨著越來越新興Qt建站應用軟體的出現,用戶可以更加方便地搭建跨平台和可移植性更高的程序。由於Linux操作系統大量使用靜態編譯,許多用戶在使用Qt建站時希望將其應用進行靜態編譯,以節省後續的移植成本。
靜態編譯Qt應用需要滿足以下條件:
(1)必須安裝Qt源碼。可以從官網下載Qt安裝包,也可以從git倉庫更新,一般來說需要安裝qt-every-where-src-VERSION.tar.gz這類的源碼包。
(2)使用QT_STATIC_BUILD編譯參數,可以指定安裝路徑以部署編譯好的二進制文件。
(3)使用Linux平台特定的軟體包管理器,比如Debian和Ubuntu,下載並安裝相關的編譯庫:
-debreate Build-Deps,用以載入基本的編譯包
-qtwebkit-src,編譯應用程序所需要的前端引擎組件
-qtbase-src,編譯應用程序所需要的包含Qt library、GUI等組件
根據以上步驟,可以利用Linux命令行工具編譯Qt應用,例如:
$ ./configure –prefix=/path/Qt,如果使用Qt5,可以使用-static-developer參數
$ make,如果需要加速編譯,可以加上-j參數
$ make install
最後,可以對構建的二進制文件運行ldd命令、ldconfig命令以及QMAKE等捆綁工具,以構建具有完整功能的應用程序二進制包。
以上就是Linux上靜態編譯Qt應用實現方案。Qt模塊可以快速安全地完成構建,使用是靜態編譯可以實現應用跨平台和可移植性更高,給用戶帶來更優的體驗。
D. linuxqt編譯
linux下執行qt程序怎麼編譯運行?
1、在Linux下的命令行編輯程序:#mkdirhello//mkdir命令創建一個hello目錄#cdhello//cd命令切換到剛才創建的hello目錄#vimain.cpp//在hello目錄中用vi創建一個main.cpp文件將下面的代碼輸入到main.cpp文件中#include
怎樣在ubuntu下安裝qt嵌入式?
1cd~/Qtenv 2 3chmo+xqt-sdk-linux-x86-opensource-2010.04.bin 4 5./qt-sdk-linux-x86-opensource-2010.04.bin 為了文件管理方便,將sdk也安裝在Qtenv文件夾中。 2、解壓源代碼包 在用戶目錄下建立一個Qtenv目錄,用於存放編譯源文件。 mkdir$HOME/Qtenv 在qtembedded目錄下創建arm和x86目錄。創建這兩個目錄主要是為了編譯一個用戶arm開發版的QTE,另一個目錄用於存放用於qvfb的x86下QTE,這樣演示和開發都很方便。 1cd~/Qtenv 2mkdirarmx86 接下來將源代碼包分別復制到arm和x86下並解壓縮。這樣做雖然浪費了一些硬碟空間(ps:在宿主機上的硬碟太不值錢了),但能為將來再配置和編譯節省很多時間。 1cd~/Qtenv 2mvqt-everywhere-opensource-src-4.6.3.tar.bz2./arm 3cd~/Qtenv/arm 4tarxjvfqt-everywhere-opensource-src-4.6.3.tar.bz2 5 6cd~/Qtenv/x86 7mvqt-everywhere-opensource-src-4.6.3.tar.bz2./x86 8tarxjvf./x86/qt-everywhere-opensource-src-4.6.3.tar.bz2 解壓縮後分別針對arm平台和x86平台進行配置,配置前可輸入 ./configure-embedded-help 進行配置幫助查詢,根據平台配置,並編譯和安裝文件。其命令代碼如下: 1cd~/Qtenv/arm 2./configure-prefix$HOME/Qtenv/arm-embeddedarm-nomakedocs-nomakedemo-nomakeexamples 3make 4makeinstall 5 6cd~/Qtenv/x86 7./configure-prefix$HOME/Qtenv/arm-embeddedx86-nomakedocs-nomakedemo-nomakeexamples 8make 9makeinstall 在經過漫長的配置、編譯後就完成了QTE的安裝。本人在arm版的編譯過程中出現過兩個錯誤,在參考《在arm-linux-gcc3.4.1下編譯qt-embedded-4.6.2》完成編譯。 完成編譯和安裝後需要對系統的環境變數進行設置,設置可以是臨時性設置和永久性設置。臨時行設置是直接在命令窗口輸入 1exportQTENV=$HOME/Qtenv 2exportQTXDIR=$QTENV/qtsdk 3exportQTEDIR=$QTENV/x86 4exportPATH=$QTXDIR/qt/bin:$PATH 5exportLD_LIBRARY_PATH=$QTXDIR/lib:$LD_LIBRARY_PATH 6exportQVFBDIR=$QTXDIR/qt/bin 7exportQTEMAKEDIR=$QTEDIR/bin 以上這些變數可以根據自己的喜好進行增刪。這種設置方法在關閉當前命令終端後失效。 第二種方式是在當前用戶的主目錄下,編輯.bash_profile文件,加入上述命令行,保存重啟命令終端即可。
如何在ARMLinux環境中搭建QT運行環境?
1、可以2、QtCreator只是一個集成開發工具,這個版本隨意,網上下就可以,Qte不是用最新,而是最好用跟你在Linux開台開發一樣的。首先要在Linux下交叉編譯Qte的庫,然後再將Lib這些文件移植在板子上,最後通過交叉編譯好的庫去編譯你在pc
樹莓派下怎樣運行移植的QT程序?
你可以參考SQLiteStudio這個Qt寫的跨平台SQLite管理工具,它自己打包了依賴的Qt庫,可以做到解壓即用,兼容不同Linux發行版.道理其實跟Windows版Qt程序自帶Qt庫差不多.
編譯前給連接器傳一個參數:
說明:
-Wl表示告訴編譯器將後面的參數傳遞給鏈接器.
rpath是gcc的一個參數,當程序被載入時,會搜尋rpath目錄,尋找共享庫.
rpath添加的目錄信息保存在可執行文件中.
$ORIGIN表示可執行文件所在的目錄.
也就是運行時程序會先去自己所在的目錄的lib里去載入依賴庫,沒有的話再去系統庫里找.
如果你的程序在編譯時沒有傳遞rpath參數,那你也可以用patchelf來修改你程序的rpath:
注意:patchelf修改文件後再strip會導致文件損壞.
所以應該先用strip刪除符號表縮小二進制文件,然後再用patchelf設置rpath.
題外話,Android上既沒有glibc庫,也沒有庫鏈接器ld-linux.so.3.
如果你要把DebianARM(如樹莓派Raspbian)上的軟體放到Android上跑,你一樣可以打包程序依賴的共享庫,讓程序也能跑在Android上,比如PHP:
也就是你把庫鏈接器ld-linux-armhf.so.3和PHP依賴的庫都放到/data/local/tmp/web/lib里,然後設置個別名,就能在Android的adbshell里運行樹莓派的PHP了.
當然,你也可以用patchelf設置PHP的interpreter和rpath,效果差不多:
怎樣交叉編譯一個QT應用程序?
1.設置環境變數:rPATH=添加為交叉環境下編譯後生成的qmake路徑,通常和主機的系統是一種架構,同時需要確保交叉gcc編譯器在在PATH定義rQMAKESOEC=交叉編譯的對象的的平台描述文件,例如makespec/qws/linux-arm-g++rQTDIR=Qt的安裝文件,存放這庫和頭文件rLD_LIBRARY_PATH=存放的是Qt的交叉編譯後的庫,准備為目標編譯鏈接的庫r2。執行環境變數r通常我們都會將以上的設置放置在一個bash腳本中,需要的時候就執行一下。開始編譯r1.使用qmake-project來生成項目文件****.pror2使用qmake來生成Makefile文件r3使用make來編譯移植:使用readeif工具來分析目標系統的以來庫,然後相關的庫到目標文件系統內。通常我們也是採取腳本的方式來完成。r一般而言,凡是有規律的或者重復性的工作,我們都可以採取腳本的方式來解決。
E. 奼傚姪錛歲t鍦╨inux涓嬶紝宓屽叆寮忎氦鍙夌紪璇戠幆澧冮厤緗錛
絳:1銆佸彲浠2銆丵tCreator鍙鏄涓涓闆嗘垚寮鍙戝伐鍏鳳紝榪欎釜鐗堟湰闅忔剰錛岀綉涓婁笅灝卞彲浠ワ紝Qte涓嶆槸鐢ㄦ渶鏂幫紝鑰屾槸鏈濂界敤璺熶綘鍦↙inux寮鍙板紑鍙戜竴鏍風殑銆
棣栧厛瑕佸湪Linux涓嬩氦鍙夌紪璇慟te鐨勫簱錛岀劧鍚庡啀灝哃ib榪欎簺鏂囦歡縐繪嶅湪鏉垮瓙涓婏紝鏈鍚庨氳繃浜ゅ弶緙栬瘧濂界殑搴撳幓緙栬瘧浣犲湪pc涓婄紪鍐欑殑紼嬪簭錛屾斁鍒版澘瀛愪笂榪愯!鍏充簬浜ゅ弶緙栬瘧QT鐨勬枃絝狅紝緗戜笂鍙浠ユ悳鍒板緢澶氥
3銆乄IN7騫沖彴鐨勪氦鍙夌紪璇戝伐鍏峰畨瑁呮瘮杈冮夯鐑︼紝涓嶆帹鑽愪嬌鐢錛岀洿鎺ュ湪Linux鍘諱笅涓涓鍒浜轟氦鍙夊伐鍏峰寘錛岀洿鎺ヨВ鍘嬪氨濂姐傘
鍘誨弸鍠勭殑瀹樼綉錛屾垨鍏朵粬緗戠珯涓嬭繖綾葷殑宸ュ叿瑙夊緱浣犺佸厛鐞嗚В浠涔堝彨浜ゅ弶緙栬瘧寮鍙!!!!!
F. 我在windows下用QT寫了個程序,把這個源代碼直接在linux下編譯可以嗎
可以,只要你不調用Windows的API函數就可以。 還有你在不同的系統可以使用條件編譯那樣就不存在任何問題了