㈠ 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喅銆
㈡ linux紼嬪簭緙栬瘧linux紼嬪簭緙栬瘧
鍦╨inux閲岋紝c紼嬪簭鐨勭紪杈戙佺紪璇戙佽皟璇曠殑璇︾粏姝ラゆ槸浠涔堬紵
鍦╨inux涓嬶紝涓鑸鐨刢紼嬪簭寮鍙戞祦紼嬩負錛歝紼嬪簭鐨勭紪杈戱細涓鑸鎯呭喌涓嬶紝綆鍗曠殑c紼嬪簭緙栬緫鏄閫氳繃vi鏂囨湰緙栬緫鍣ㄨ繘琛岀殑錛岃娉曟牸寮忓拰鍦╳indows涓嬬殑緙栬緫鏄涓鏍風殑錛
c紼嬪簭鐨勭紪璇戱細鑰岀紪璇戝垯鏄瀵圭紪杈戝ソ鐨刢璇璦紼嬪簭榪涜屼竴涓錛岄勫勭悊錛岀紪杈戱紝奼囩紪鍜岄摼鎺ョ殑榪囩▼錛屼竴鑸鏍煎紡涓:緙栬瘧鍣ㄥ悕-鍙傛暟鐩鏍囨枃浠跺悕婧愭枃浠跺悕錛涗竴鑸宸ヤ綔鍦ㄥ懡浠よ屾ā寮忥紱
c紼嬪簭鐨勮皟璇曪細璋冭瘯闃舵靛垯鏄寤虹珛鍦╟紼嬪簭緙栬瘧閫氳繃鐨勬儏鍐典笅榪涜岀殑錛屼竴鑸閫氳繃GDB璋冭瘯榪涜岋紝閫愭ユ帓閿欏拰緇嗚妭鏌ョ湅銆
鍦╨inux涓錛屾庝箞鐢╣cc緙栬瘧鏂囦歡錛
緙栬瘧鏂規硶錛氭牸寮廹cc甯哥敤鐨勯夐」鏈綆鍗曠殑鏄:gcchello.c榛樿ょ殑鎯呭喌涓嬪皢鐢熸垚a.out鐨勫彲鎵ц屾ф枃浠訛紝鍙闇瑕佸湪緇堢涓婅緭鍏./a.out灝卞彲浠ョ湅鍒版墽琛岀殑緇撴灉錛屽傛灉浣犳兂鎸囧畾鐢熸垚鐩鏍囨枃浠剁殑鍚嶅瓧閭d箞浣犲彲浠ュ姞涓-o閫夐」,鍛戒護濡備笅:gcc-ohellohello.c鍛戒護錛歡cc-chellohello.c
鎵╁睍璧勬枡錛
gcc鍛戒護鐨勫熀鏈鐢ㄦ硶gcc鍏朵腑錛宖ilenames涓烘枃浠跺悕錛沷ptions涓虹紪璇戦夐」銆傚綋涓嶄嬌鐢ㄤ換浣曠紪璇戦夐」緙栬瘧hello.c鏃訛紝gcc灝嗕細鑷鍔ㄧ紪璇戜駭鐢熶竴涓猘.out鐨勫彲鎵ц屾枃浠訛細#lshello.c#gcchello.c#lsa.outhello.c鎵ц岋細#./a.outHello,World!浣跨敤-o緙栬瘧閫夋嫨錛屽彲浠ヤ負緙栬瘧鍚庣殑鏂囦歡鎸囧畾涓涓鍚嶅瓧錛#lsa.outhello.c#gcchello.c-ohello#lsa.outhellohello.c鎵ц岋細#./helloHello,World!娉ㄦ剰錛氫嬌鐢-o閫夐」鏃訛紝-o鍚庨潰蹇呴』璺熶竴涓鏂囦歡鍚嶏紝鍗籌細-ooutfile銆備負浜嗕究浜庢弿榪板悗闈㈢殑閫夐」錛屽垹闄hello鍜宎.out鍙鎵ц屾枃浠躲linux鍏ラ棬鍩虹錛堜笁錛塆cc緙栬瘧緙栫▼錛
銆愬笇鏈涘逛綘鏈夊府鍔┿
寤鴻浣犵湅鐪嬬紪紼嬬殑涓浜涘熀紜鐭ヨ瘑
-緇忓吀helloword紼嬪簭
#includestdio.h>
intmian()
{
printf("helloworld!n");
return0;
}
-緙栬瘧
-榪涘叆緇堢
-榪涘叆婧愭枃浠舵墍鍦ㄧ殑鐩褰
$gcchello.c-ohello
-榪愯
$./hello
arm-linux-gcc鎬庝箞緙栬瘧鏂囦歡錛
鍙浠ヤ嬌鐢╣cc鍛戒護榪涜岀紪璇戱細渚嬪瓙錛歡cc-ohellohello.c#鍦ㄨ繖閲宧ello.c鏄婧愭枃浠訛紝hell涓虹洰鏍囪緭鍑烘枃浠墮氳繃緙栬瘧鍣ㄧ紪璇戜富瑕佹槸緇忚繃錛氶勫勭悊錛屾眹緙栵紝緙栬瘧鍜岄摼鎺ョ殑榪囩▼錛
linux濡備綍緙栬瘧榪愯宼est.c錛
鎴戠殑錛歡cc-ctest.c-oa.out緙栬瘧
./a.out榪愯