『壹』 linuxqt緙栬瘧
linux涓嬫墽琛宷t紼嬪簭鎬庝箞緙栬瘧榪愯岋紵
1銆佸湪Linux涓嬬殑鍛戒護琛岀紪杈戠▼搴忥細#mkdirhello//mkdir鍛戒護鍒涘緩涓涓猦ello鐩褰#cdhello//cd鍛戒護鍒囨崲鍒板垰鎵嶅壋寤虹殑hello鐩褰#vimain.cpp//鍦╤ello鐩褰曚腑鐢╲i鍒涘緩涓涓猰ain.cpp鏂囦歡灝嗕笅闈㈢殑浠g爜杈撳叆鍒癿ain.cpp鏂囦歡涓#include
鎬庢牱鍦╱buntu涓嬪畨瑁卶t宓屽叆寮忥紵
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銆佽В鍘嬫簮浠g爜鍖 鍦ㄧ敤鎴風洰褰曚笅寤虹珛涓涓猀tenv鐩褰曪紝鐢ㄤ簬瀛樻斁緙栬瘧婧愭枃浠躲 mkdir$HOME/Qtenv 鍦╭tembedded鐩褰曚笅鍒涘緩arm鍜寈86鐩褰曘傚壋寤鴻繖涓や釜鐩褰曚富瑕佹槸涓轟簡緙栬瘧涓涓鐢ㄦ埛arm寮鍙戠増鐨凲TE錛屽彟涓涓鐩褰曠敤浜庡瓨鏀劇敤浜巕vfb鐨剎86涓婹TE錛岃繖鏍鋒紨紺哄拰寮鍙戦兘寰堟柟渚褲 1cd~/Qtenv 2mkdirarmx86 鎺ヤ笅鏉ュ皢婧愪唬鐮佸寘鍒嗗埆澶嶅埗鍒癮rm鍜寈86涓嬪苟瑙e帇緙┿傝繖鏍峰仛鉶界劧嫻璐逛簡涓浜涚‖鐩樼┖闂達紙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 瑙e帇緙╁悗鍒嗗埆閽堝筧rm騫沖彴鍜寈86騫沖彴榪涜岄厤緗錛岄厤緗鍓嶅彲杈撳叆 ./configure-embedded-help 榪涜岄厤緗甯鍔╂煡璇錛屾牴鎹騫沖彴閰嶇疆錛屽苟緙栬瘧鍜屽畨瑁呮枃浠躲傚叾鍛戒護浠g爜濡備笅錛 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涓嬬紪璇憅t-embedded-4.6.2銆嬪畬鎴愮紪璇戙 瀹屾垚緙栬瘧鍜屽畨瑁呭悗闇瑕佸圭郴緇熺殑鐜澧冨彉閲忚繘琛岃劇疆錛岃劇疆鍙浠ユ槸涓存椂鎬ц劇疆鍜屾案涔呮ц劇疆銆備復鏃惰岃劇疆鏄鐩存帴鍦ㄥ懡浠ょ獥鍙h緭鍏 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鏂囦歡錛屽姞鍏ヤ笂榪板懡浠よ岋紝淇濆瓨閲嶅惎鍛戒護緇堢鍗沖彲銆
濡備綍鍦ˋRMLinux鐜澧冧腑鎼寤篞T榪愯岀幆澧冿紵
1銆佸彲浠2銆丵tCreator鍙鏄涓涓闆嗘垚寮鍙戝伐鍏鳳紝榪欎釜鐗堟湰闅忔剰錛岀綉涓婁笅灝卞彲浠ワ紝Qte涓嶆槸鐢ㄦ渶鏂幫紝鑰屾槸鏈濂界敤璺熶綘鍦↙inux寮鍙板紑鍙戜竴鏍風殑銆傞栧厛瑕佸湪Linux涓嬩氦鍙夌紪璇慟te鐨勫簱錛岀劧鍚庡啀灝哃ib榪欎簺鏂囦歡縐繪嶅湪鏉垮瓙涓婏紝鏈鍚庨氳繃浜ゅ弶緙栬瘧濂界殑搴撳幓緙栬瘧浣犲湪pc
鏍戣帗媧句笅鎬庢牱榪愯岀Щ妞嶇殑QT紼嬪簭錛
浣犲彲浠ュ弬鑰僑QLiteStudio榪欎釜Qt鍐欑殑璺ㄥ鉤鍙癝QLite綆$悊宸ュ叿,瀹冭嚜宸辨墦鍖呬簡渚濊禆鐨凲t搴,鍙浠ュ仛鍒拌В鍘嬪嵆鐢,鍏煎逛笉鍚孡inux鍙戣岀増.閬撶悊鍏跺疄璺焀indows鐗圦t紼嬪簭鑷甯Qt搴撳樊涓嶅.
緙栬瘧鍓嶇粰榪炴帴鍣ㄤ紶涓涓鍙傛暟:
璇存槑:
-Wl琛ㄧず鍛婅瘔緙栬瘧鍣ㄥ皢鍚庨潰鐨勫弬鏁頒紶閫掔粰閾炬帴鍣.
rpath鏄痝cc鐨勪竴涓鍙傛暟,褰撶▼搴忚鍔犺澆鏃,浼氭悳瀵籸path鐩褰,瀵繪壘鍏變韓搴.
rpath娣誨姞鐨勭洰褰曚俊鎮淇濆瓨鍦ㄥ彲鎵ц屾枃浠朵腑.
$ORIGIN琛ㄧず鍙鎵ц屾枃浠舵墍鍦ㄧ殑鐩褰.
涔熷氨鏄榪愯屾椂紼嬪簭浼氬厛鍘昏嚜宸辨墍鍦ㄧ殑鐩褰曠殑lib閲屽幓鍔犺澆渚濊禆搴,娌℃湁鐨勮瘽鍐嶅幓緋葷粺搴撻噷鎵.
濡傛灉浣犵殑紼嬪簭鍦ㄧ紪璇戞椂娌℃湁浼犻抮path鍙傛暟,閭d綘涔熷彲浠ョ敤patchelf鏉ヤ慨鏀逛綘紼嬪簭鐨剅path:
娉ㄦ剰:patchelf淇鏀規枃浠跺悗鍐峴trip浼氬艱嚧鏂囦歡鎹熷潖.
鎵浠ュ簲璇ュ厛鐢╯trip鍒犻櫎絎﹀彿琛ㄧ緝灝忎簩榪涘埗鏂囦歡,鐒跺悗鍐嶇敤patchelf璁劇疆rpath.
棰樺栬瘽,Android涓婃棦娌℃湁glibc搴,涔熸病鏈夊簱閾炬帴鍣╨d-linux.so.3.
濡傛灉浣犺佹妸DebianARM(濡傛爲鑾撴淳Raspbian)涓婄殑杞浠舵斁鍒癆ndroid涓婅窇,浣犱竴鏍峰彲浠ユ墦鍖呯▼搴忎緷璧栫殑鍏變韓搴,璁╃▼搴忎篃鑳借窇鍦ˋndroid涓,姣斿侾HP:
涔熷氨鏄浣犳妸搴撻摼鎺ュ櫒ld-linux-armhf.so.3鍜孭HP渚濊禆鐨勫簱閮芥斁鍒/data/local/tmp/web/lib閲,鐒跺悗璁劇疆涓鍒鍚,灝辮兘鍦ˋndroid鐨刟dbshell閲岃繍琛屾爲鑾撴淳鐨凱HP浜.
褰撶劧,浣犱篃鍙浠ョ敤patchelf璁劇疆PHP鐨剗nterpreter鍜宺path,鏁堟灉宸涓嶅:
鎬庢牱浜ゅ弶緙栬瘧涓涓猀T搴旂敤紼嬪簭錛
1.璁劇疆鐜澧冨彉閲忥細rPATH錛濇坊鍔犱負浜ゅ弶鐜澧冧笅緙栬瘧鍚庣敓鎴愮殑qmake璺寰勶紝閫氬父鍜屼富鏈虹殑緋葷粺鏄涓縐嶆灦鏋勶紝鍚屾椂闇瑕佺『淇濅氦鍙塯cc緙栬瘧鍣ㄥ湪鍦≒ATH瀹氫箟rQMAKESOEC錛濅氦鍙夌紪璇戠殑瀵硅薄鐨勭殑騫沖彴鎻忚堪鏂囦歡錛屼緥濡俶akespec/qws/linux-arm-g++rQTDIR=Qt鐨勫畨瑁呮枃浠訛紝瀛樻斁榪欏簱鍜屽ご鏂囦歡rLD_LIBRARY_PATH=瀛樻斁鐨勬槸Qt鐨勪氦鍙夌紪璇戝悗鐨勫簱錛屽噯澶囦負鐩鏍囩紪璇戦摼鎺ョ殑搴搑2銆傛墽琛岀幆澧冨彉閲弐閫氬父鎴戜滑閮戒細灝嗕互涓婄殑璁劇疆鏀劇疆鍦ㄤ竴涓猙ash鑴氭湰涓錛岄渶瑕佺殑鏃跺欏氨鎵ц屼竴涓嬨傚紑濮嬬紪璇憆1.浣跨敤qmake錛峱roject鏉ョ敓鎴愰」鐩鏂囦歡****.pror2浣跨敤qmake鏉ョ敓鎴怣akefile鏂囦歡r3浣跨敤make鏉ョ紪璇戠Щ妞嶏細浣跨敤readeif宸ュ叿鏉ュ垎鏋愮洰鏍囩郴緇熺殑浠ユ潵搴擄紝鐒跺悗鐩稿叧鐨勫簱鍒扮洰鏍囨枃浠剁郴緇熷唴銆傞氬父鎴戜滑涔熸槸閲囧彇鑴氭湰鐨勬柟寮忔潵瀹屾垚銆俽涓鑸鑰岃█錛屽嚒鏄鏈夎勫緥鐨勬垨鑰呴噸澶嶆х殑宸ヤ綔錛屾垜浠閮藉彲浠ラ噰鍙栬剼鏈鐨勬柟寮忔潵瑙e喅銆
『貳』 Qt6.3 for Android - 命令行CMake方式編譯打包APK
本文將闡述如何利用命令行CMake方式,編譯並打包Qt6.3 for Android至APK文件。首先,構建環境需預先搭建完成,具體指南可見鏈接。接著,我們藉助官方文檔指引,利用qt-cmake工具編寫編譯腳本。需注意,腳本中應包含-DANDROID_SDK_ROOT與-DANDROID_NDK_ROOT參數,並確保參數傳遞方式正確,避免使用~代替用戶特定路徑。引入外部庫或QML插件時,應在頂層CMakeLists尾部插入qt_finalize_project()以確保依賴正確打包。此操作在使用qtcreator進行編譯部署時可能會產生異常,但通過命令行編譯時則表現正常。此外,建議將Android SDK、NDK等組件放置於用戶目錄下以簡化許可權管理。完成腳本編寫後,需創建一個調度腳本來整合整個編譯流程。成功運行腳本後,通過adb命令安裝生成的APK文件,至此編譯打包過程圓滿結束。
『叄』 Qt-Installer-Framework使用(一)
Qt-Installer-Framework (QIFW),作為Qt官方推薦的打包工具,以其強大的功能滿足了日常開發中的大部分需求。本文針對Windows 7 64位系統,採用Qt 5.7.1版本和MinGW 5.3環境,以及QIFW 3.0.6版本進行了測試和驗證,後續將進一步擴展支持平台。
QIFW得益於Qt的跨平台特性,支持包括但不限於這些平台:(略)。它的使用方法多樣,主要有兩種途徑。
首先,從Qt官網下載對應版本的源碼,注意選擇與當前Qt版本兼容的,否則可能導致編譯失敗。我選擇的是3.0.6版本,此版本要求Qt 5.6以上。
我使用靜態編譯,雖然動態編譯過程中遇到了符號鏈接錯誤和庫文件連接失敗的問題,目前我正在深入研究。編譯腳本如下:
執行腳本後,大約10分鍾內完成編譯,生成的可執行文件位於工程目錄bin下。
將Example目錄下的示例復制到bin目錄,接著編寫一個腳本,命令如下:
成功執行後,打包後的exe軟體會出現在當前路徑下。
關於詳細的配置和個性化定製,將在後續文章中深入探討。