二 移植和編譯mscore-0.9.3
cc=arm-linux-gcc
./configure -prefix="/usr/local/arm/3.4.1/arm-linux" --host=arm-linux --target=arm-linux –build=i386-linux
注意:不能有 --with-softfloat,不支援浮點運算,否則編譯出錯。
關於make的幾個選項的理解:
ldshared= cc_for_build="arm-linux-gcc" cc="arm-linux-gcc" ld="arm-linux-ld" cpp="arm-linux-g++ -e" ar="arm-linux-ar rc" prefix="/usr/local/arm/3.4.1" cflags="-fpic"
其中,ld選項表示最後連線的時候,採用哪個版本的聯結器。交叉編譯中如果只指定了arm-linux-gcc,那麼最後仍然使用主機ld,就會出現.o檔案格式無法識別的問題。
然後編譯mscore-0.9.3,因為該專案用到了cmake,必須在cmakelists.txt中定義:
# added by leo to cross compile.
set(cmake_c_compiler "/usr/local/arm/3.4.1/bin/arm-linux-gcc")
set(cmake_cxx_compiler "/usr/local/arm/3.4.1/bin/arm-linux-g++")
project(mscore)
注意:這兩行定義讓cmake生成的makefile中使用arm-linux-gcc進行編譯,否則還是會使用主機的gcc.同時,前兩行設定必須在project(mscore)之前,否則設定不能生效。
參考mscore中readme,在目錄下make,編譯期間可能出現錯誤,在相應的出錯**處進行修改,或者直接注釋掉。最後,在連線時,出現錯誤 -lasound無法找到,這是聯結器ld沒有知道libasound.so庫檔案的錯誤,最終解決方法是,編譯完成後,手工執行連線操作,把arm-linux-ld -lasound中的-lasound或者先前編譯出來的libasound的絕對路徑即可。這樣就生成了可執行檔案mscore.
前面給出了在開發板上執行qtopia的啟動指令碼,執行普通的qte程式也類似,不過包含的不是qtopia的庫,應該是前面編譯好的qte4.4.3_arm目錄下的庫,把這個目錄掛載或者複製到開發板系統目錄中,這個目錄不一定要和主機目錄一樣。啟動指令碼如下:
#!/bin/sh
# created by leo feb, 10th, 2009
export set home=/root
export set qtedir=/opt/qt/qte4.4.3_arm
export set qws_keyboard="usb:/dev/input/event1"
export set qws_mouse_proto="tslib:/dev/h3600_tsraw"
export set qws_size=800x480
export set ld_library_path=$ld_library_path:$qtedir/lib:/usr/local/arm/3.4.1/arm-linux/lib
#export set qws_display="linuxfb:mmwidth35:mmheight45:0"
export set qws_display="linuxfb:mmwidth90:mmheight110:0"
ln -s /dev/fb0 /dev/fb/0
export set tslib_root=/opt/tslib1.4-install
export set tslib_tseventtype=h3600
export set tslib_fbdevice=/dev/fb0
export set tslib_tsdevice=/dev/h3600_tsraw
export set tslib_conffile=$tslib_root/etc/ts.conf
export set tslib_consoledevice=none
export set tslib_calibfile=/etc/pointercal
export set tslib_plugindir=$tslib_root/lib/ts/
export set ld_library_path=$ld_library_path:$tslib_root/lib
if [ -f "/etc/pointercal" ]; then
export set pointercal_file=/etc/pointercal
$qtedir/bin/mscore -qws
else
$tslib_root/bin/ts_calibrate
$qtedir/bin/mscore -qws
fi
這樣,mscore終於在開發板上執行起來了,樂譜符號和字型顯示正常,如意料的一樣,不可能有聲音,報錯資訊:
qpainter::begin: paint device returned engine == 0, type: 2
qpainter::end: painter not active, aborted
alsa lib conf.c:3009:(snd_config_update_r) cannot access file /usr/local/arm/3.4.1/arm-linux/share/alsa/alsa.conf
alsa lib pcm.c:2202:(snd_pcm_open_noupdate) unknown pcm default
alsa_driver: cannot open pcm device default for playback.
init alsa audio driver failed
init alsa driver failed
no audio driver
sequencer init failed
嵌入式Linux自學階段性總結 1
嵌入式linux自學階段性總結 zhenzhen365 hotmail.com 歡迎從事嵌入式linux圖形及裝置驅動開發的朋友交流!最近自學嵌入式linux下qt e qtopia和裝置驅動開發,短短的幾個月,遇到了一大堆問題,查詢資料然後思考,消耗了大量的腦細胞,不過還是有收穫的,最終把路終於走...
嵌入式Linux自學階段性總結 2
修改qtopia原始碼,配置和交叉編譯 a.安裝arm linux gcc 3.4.1 b.編譯tslib 1.4 觸控螢幕驅動 qtopia自帶有觸控螢幕驅動和校準程式,這裡我為了提高效能,採用tslib1.4的第三方庫。解壓tslib1.4,進入該目錄執行 cd tslib echo ac cv...
嵌入式Linux自學階段性總結 3
d.現在就可以配置.configure 引數 export path path usr local arm 3.4.1 bin mkdir opt qtopia cd opt cp r mnt qtopia tslib root tslib1.4 install cd opt qtopia tar ...