嵌入式Linux自學階段性總結 5

2021-04-25 01:01:18 字數 3066 閱讀 8246

二 移植和編譯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 ...