嵌入式Linux自學階段性總結(2)

 

  1. 修改qtopia源碼,配置和交叉編譯

a.安裝arm-linux-gcc-3.4.1

網上下載arm-linux-gcc3.4.1,直接解壓後,把usr目錄覆蓋到ubuntu根目錄,然後在~/.bashrc添加/usr/local/arm/3.4.1/bin PATH,測試:arm-linux-gcc -v 成功顯示版本。

 

b.編譯tslib-1.4觸摸屏驅動

qtopia自帶有觸摸屏驅動和校準程序,這裏我爲了提高性能,採用tslib1.4的第三方庫。

解壓tslib1.4,進入該目錄執行:

# cd tslib

# echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache

# export CC=arm-linux-gcc

# export CXX= arm-linux-g++

# ./autogen.sh

# ./configure --prefix=/opt/tslib1.4-install --host=arm-linux --cache-file=arm-linux.cache

# make

# sudo make install

 

注意:因爲使用了arm-linux-gcc/g++編譯,所以應該確保先安裝了arm-linux-gcc3.4.1,同時應該事先mkdir目錄/opt/tslib1.4-install,同時安裝了sudo apt-get install autoconf,否則./autogen.sh時會找不到工具autoreconf.然後還需要sudo apt-get install libtool,否則在重新./autogen.sh時又找不到libtoolize。在這裏,開始下了個svn版本的tslib1.4,出了個很妖的問題,make中找不到變量定義。後來用這個tslib-1.4.tar.gz版本,一切OK了。不過arm-linux.cache不能省略,否則還會出問題。

 

c.修改qtopia源碼

1>.解壓qtopia-opensource-src-4.3.2..tar.gz後,進入該目錄src/libraries/qtopiabase下,複製下面兩個頭文件並重命名,命令爲:

 

# cd src/libraries/qtopiabase

# cp custom-linux-generic-g++.h custom-linux-arm-g++.h

# cp custom-linux-generic-g++.cpp custom-linux-arm-g++.cpp

 

如果對於某些版本的qtopia,並沒有前一個./cpp文件,可以找其他類似的複製重命名就可以了.關鍵重命名成custom-<目標平臺>-g++.h/cpp就可以.不需要在custom-linux-arm-g++.cpp中修改#include "custom-linux-arm-g++.h",因爲根本就沒有包含它的頭文件,該頭文件只是定義特定設備的參數或者宏.

2>.qtopia時區修改.否則qtipia運行時候會到“/usr/share/zoneinfo/”讀取.這一步適合使用Ramdisk文件系統,而根文件系統又沒有“/usr/share/zoneinfo/”目錄的情況.如果移植給開發板的根文件系統有這個目錄,則不要進行這步.我的嵌入式linux文件系統下有/usr/share/zoneinfo目錄,就算沒有,我可以最後創建,所以不修改。

另外一種更簡潔且安全的解決方法是,1>步中複製後重命名的頭文件(或者src/qtopiacore/qconfig-qpe.h),加上宏定義:#define QTOPIA_ZONEINFO_PATH "/opt/qtopia4.3.2/target/zoneinfo/" ,注意最後編譯完後要把主機/usr/share/zoneinfo/內容考到設置的時區信息目錄中。

3>.裁減Qtopia core的庫,主要是註釋或者不註釋掉qtopiacore/qconfig-qpe.h中宏定義,這些宏的作用在該文件中都有說明.注意QT_NO_QWS_CURSOR, QT_NO_QWS_MOUSE, QT_NO_QWS_MOUSE_AUTO等宏的功能。

qconfig-qpe.h拷貝到global目錄。

# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global

這裏其他的幾個頭文件也可能需要修改,比如qfeatures.h,qglobal.h,這些文件中可以定製qpe顯示的樣式,修改窗口的效果等等.以後用到再深入學習吧!

4>.修改3.4.1版的arm編譯器的文件

# cd /usr/local/arm/3.4.1/

# vi arm-linux/include/linux/videodev2.h

在其中添加如下內容:

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')

/* 8 BGBG.. GRGR.. */

保存退出。

# vi arm/3.4.1/arm-linux/sys_include/linux/videodev2.h

在其中添加如下內容:

#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1')

/* 8 BGBG.. GRGR.. */

保存退出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章