將minigui移植到目標上:
1,複製libc,ld等工具到/lib中;
2,複製庫檔案
將庫檔案拷貝到/lib下,資源檔到/lib/minigui下,修改/usr/local/etc/Minigui.cfg將所有/usr/local/lib 替換成/lib
3,建立mknod fb c 29 0
/dev/input下建mknod mice c 13 63
Tslib交叉編譯環境問題心得
Q1:在交叉編譯TSLIB的時候出現了libtool:link: only absolute run-paths are allowed錯誤
解決方案:要修改/tslib/plugins/Makefile裡面找rpath,找到將其注釋並加上絕對路徑。
找到:LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改為:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd` (這個是頓號)
現象:
我在板子上運行./ts_test的時候,總是提示我:ts_open: No such file or directory?
這個問題曾經也折騰了我好久
在tslib的config選項中添加
--enable-inputapi=no
原因
(1)因為這個情況一般是你的觸控螢幕驅程不支援ioctl操作。
(2)更改相應的環境變數
export QWS_MOUSE_PROTO = TPanel:/dev/tp
export T_ROOT=/
export LD_LIBRARY_PATH=/lib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_TSDEVICE=/dev/tp
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/plugins
老出現以下錯誤:
/demo/same # ./same
AttachSharedResource: No such file or directory
Error in step 7: Can not attach shared resource!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
原因是:Resource不完整重新編譯一遍minigui
現象:
/demo/bomb # ./bomb
./bomb: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: sem_init
/demo/bomb # cd ..
/demo # cd same/
/demo/same # ./same
./same: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: sem_init
原因:
由於我重新編譯了libminigui的庫,所以mde-1.3.0也要重新編譯
現象:
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_create'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_destroy'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_wait'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_post'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_kill_other_threads_np'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_init'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`sem_getvalue'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`pthread_join'
原因:
由於我重新編譯了libminigui的庫,所以編譯mde-1.3.0時不能定位到新的/usr/local/arm/3.4.1/lib/gcc/arm-
linux/3.4.1/../../../../arm-linux/lib/libminigui.so上,
解決方案是重新設定mde-1.3.0, ./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux
prefix=/usr/local/arm/3.4.1/arm-linux
這樣再次make就會順利通過
現象:
/demo/notebook # ./notebook
Aborted
原因:
現象
(1)/demo/same # ./same
./same: relocation error: /lib/libminigui-1.3.so.3: undefined symbol: TT_Init_FreeType
(2)
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_New_Glyph'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_CharMap_First'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_Set_Instance_Transform_Flags'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`TT_Load_Glyph'
原因:
libminigui要完全重新編譯一次先make clean,再make,make install
現象
arm-linux-gcc -g -O2 -Wall -Wstrict-prototypes -pipe -D_REENTRANT -o notebook main.o -lmgext -lpthread -lminigui
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_close'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_read'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to
`ts_open'
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/libminigui.so: undefined reference to `ts_fd'
collect2: ld returned 1 exit status
make[2]: *** [notebook] 錯誤 1
原因
編譯時間要加入連結庫tslib
修改configure命令
./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux CFLAGS="-
L/usr/local/arm/3.4.1/arm-linux/lib -lts"
現象:
/demo/same # ./same
IAL: Can not open mouse-like device!
IAL: Init IAL engine failure.
DESKTOP: Low level event initialization failure!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.
原因:
minigui的輸入引擎檔案初始化出現問題,dummy.c檔案的InitDummyInput寫的有問題open()函數有問題得重新修改
加入tslib後minigui,mde的編譯選項
minigui的./config選項:./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux --
disable-galqvfb --disable-galecoslcd --disable-vbfsupport --prefix=/usr/local/arm/3.4.1/arm-linux CFLAGS="-
I/usr/local/arm/3.4.1/arm-linux/include -L/usr/local/arm/3.4.1/arm-linux/lib -lts"
mde的./config選項:./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux
CFLAGS="I/usr/local/arm/3.4.1/arm-linux/include -L/usr/local/arm/3.4.1/arm-linux/lib -lts"
移植到其他機子上時檔案系統的改動:
(1)檔案系統複製時dev/目錄下的節點無法複製得自己重新建立才行
(2)若是minigui的系統話還得改/usr/local/etc/MiniGUI.cfg,得改成640*480的屏才行
(3)若加了tslib自校準庫的話得改/etc/ts.conf改成:
module mousebuts
#module variance xlimit=50 ylimit=50 pthreshold=3
#module dejitter xdelta=1 ydelta=1 pthreshold=3
module linear
當我注釋掉variance和dejitter的時候,游標會移動,但偏差較大,當我只注釋variance時,仍然會隨我移動,但當我都不注釋回複
到預設的情況時,仍然不會隨我移動。最後我把moudule mousebuts注釋取消掉,游標又會隨我移動了,並且效果比前面的都好。納悶
了既然module mousebuts會直接影響成功與否,variance,為什麼最初會預設注釋掉?而且module mousebuts的作用我也不是很清楚
?
現象:
運行./ts_calibrate又出現了令人十分之鬱悶的錯誤:
ts_config: Success
追查後應該是在開啟ts_config中出現了錯誤(居然報Success,無欲至極)
在網上發現多是這個錯誤(這是1.4版本的錯):
Couldnt load module input
No raw modules loaded
tsconfig: Success
我沒有上面那兩行的錯誤,不過應該是一樣的錯誤原因
那麼錯誤就定位在 ts_config 裡。並且可以進一步確定是在載入外掛程式模組時出的錯
另一個原因就是你沒有正確配置TSLIB_PLUGINDIR,tslib從你指定的目錄中沒有找到plugin需要的模組檔案,
請檢查你的路徑和檔案。