Tslib Qt Linux 交叉編譯工具鏈gcc 軟 件 環 境 搭 建

                                                                                            境 

 

 

簡介:

0 - 軟件平臺

1 - 安裝交叉編譯環境

2 - 安裝編譯好的tslib 庫

3 - 使用tslib源碼包自己進行配置編譯安裝(可選)

4 - 進行tslib到開發板的移植與測試

5 - 安裝Qt4.8.6開發環境

6 - 進行Qt到開發板的配置

7 - 軟件源碼編譯

8 - QtCreator 的安裝和配置(可選)

 

注意: 1 進行以下操作前,先確保當前主機的用戶權限,推薦操作全在普通用戶下完成,而非root用戶。

          2 以下出現 紅色字體處 表示是需要額外注意的地點,降低出錯的的可能性。

 

 

0 軟件平臺

Linux : Ubuntu 12.04

Qt    : 4.8.6

Tslib : tslib-1.4

交叉編譯工具鏈: gcc version 4.8.3 (Sourcery CodeBench Lite 2014.05-29)

 

 

1 安裝交叉編譯環境

1-1使用提供的壓縮包:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2安裝工具鏈,只需要將壓縮包進行解壓,並設置環境變量即可,解壓後生成 arm-2014.05 目錄,其中的bin裏面包含工具鏈如

arm-none-linux-gnueabi-gcc (編譯.c源文件)

arm-none-linux-gnueabi-g++(編譯.c++源文件)的可執行文件。

 

user@ubuntu:~/toolchain$ ls

arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ tar -xjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ ls

arm-2014.05  arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

user@ubuntu:~/toolchain$ ls arm-2014.05/bin/

arm-none-linux-gnueabi-c++  ...

 

1-2使用vi命令修改 當前所在用戶的 .profile文件,在底部(快捷鍵 GG)加入交叉編譯器的路徑,按下ESC,輸入:wq保存退出,可再次打開檢查是否成功添加

export PATH=$PATH:/home/user/toolchain/arm-2014.05/bin/

 

1-3修改完成後,讓.profile中設置的環境變量生效,使用source命令

user@ubuntu:~/toolchain/arm-2014.05/bin$ source /home/user/.profile

 

1-4在終端輸入arm-none並按下TAB,如果看到諸如arm-none-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確。

user@ubuntu:~/toolchain/arm-2014.05/bin$ arm-none-linux-gnueabi-

arm-none-linux-gnueabi-addr2line   arm-none-linux-gnueabi-gcc-ranlib

arm-none-linux-gnueabi-ar          arm-none-linux-gnueabi-gcov

arm-none-linux-gnueabi-as          arm-none-linux-gnueabi-gdb

arm-none-linux-gnueabi-c++         arm-none-linux-gnueabi-gprof

arm-none-linux-gnueabi-c++filt     arm-none-linux-gnueabi-ld

arm-none-linux-gnueabi-cpp         arm-none-linux-gnueabi-nm

arm-none-linux-gnueabi-cs          arm-none-linux-gnueabi-objcopy

...

 

2 安裝編譯好的tslib 庫

2-1由於計費單元軟件需要tslib的支持,所以需要先安裝tslib庫 ,這裏直接將提供的編譯好的庫文件壓縮包解壓即可。解壓tslib.tar.gz ,將其解壓在新建的目錄libfile下

user@ubuntu:~$ mkdir libfile

user@ubuntu:~/libfile$ ls

tslib.tar.gz

user@ubuntu:~/libfile$ tar xf tslib.tar.gz

user@ubuntu:~/libfile$ ls

tslib  tslib.tar.gz

user@ubuntu:~/libfile$ ls tslib

bin  etc  include  lib

 

 

3 使用tslib源碼包自己進行配置編譯安裝(可選)

3-1首先需要檢查一下需要的軟件是否安裝

sudo apt-get install automake

sudo apt-get install autogen

sudo apt-get install autoconf

 

3-2將提供的tslib源碼包拷貝到新建的tslibfile文件夾中

user@ubuntu:~$ mkdir tslibfile

user@ubuntu:~/tslibfile$ ls

tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ tar -zxvf tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ ls

tslib  tslib-1.4.tar.gz

user@ubuntu:~/tslibfile$ cd tslib/

user@ubuntu:~/tslibfile/tslib$ ./autogen.sh

 

可能出現的錯誤和解決方法:

configure.ac:25: error: possibly undefined macro: AC_DISABLE_STATIC

      If this token and others are legitimate, please use m4_pattern_allow.

      See the Autoconf documentation.

configure.ac:26: error: possibly undefined macro: AC_ENABLE_SHARED

configure.ac:27: error: possibly undefined macro: AC_LIBTOOL_DLOPEN

configure.ac:28: error: possibly undefined macro: AC_PROG_LIBTOOL

autoreconf: /usr/bin/autoconf failed with exit status: 1

解決方法:

ubuntu下安裝libtool

user@ubuntu:~/tslibfile/tslib$ sudo apt-get install libtool

 

3-3接着運行配置文件,再進行編譯和安裝

user@ubuntu:~/tslibfile/tslib$ ./configure --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no  ac_cv_func_malloc_0_nonnull=yes  --prefix=/usr/local/

 

-prefix=/usr/local/是指定安裝的路徑,其實包括下文的安裝配置,路徑都可以不指定,默認就是安裝到/usr/local/目錄下注意這個路徑會直接影響下面Qt源碼編譯安裝的autoconfig.sh配置文件中的-I 和 -L 的指定,修改爲對應的指定安裝路徑位置即可

 

user@ubuntu:~/tslibfile/tslib$ make

 

可能出現的錯誤和解決方法:

usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

    __open_missing_mode ();

                        ^

In function ‘open’,

    inlined from ‘main’ at ts_calibrate.c:229:11:

/usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

    __open_missing_mode ();

                        ^

make[2]: *** [ts_calibrate.o] Error 1

make[2]: Leaving directory `/home/user/tslibfile/tslib/tests'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/user/tslibfile/tslib'

make: *** [all] Error 2

解決方法:

gcc 新版本編譯器對語法檢查嚴格,在源文件 ./tests/ts_calibrate.c 中第 227 行

 

// 源文件

// if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {

//     cal_fd = open (calfile, O_CREAT | O_RDWR);

// } else {

//   cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR);

// }

// 需要更改成如下形式

if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {

    cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);

} else {

cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);

 

//最後開始安裝,注意要使用管理員權限

user@ubuntu:~/tslibfile/tslib$ sudo make install

...  ...  ...

make[2]: Leaving directory `/home/user/tslibfile/tslib'

make[1]: Leaving directory `/home/user/tslibfile/tslib'

 

 

 

4 進行tslib到開發板的移植與測試

4-1將安裝路徑下的整個tslib文件夾,下載至開發板上,我存放的路徑爲/usr/local

4-2通過超級終端,打開tslib文件夾下的etc/ts.conf文件

# module_raw input一行前面的符號和空格去掉,注意空格也不能留

 

4-3再打開環境變量文件/etc/profile,並添加相應內容

[root@DCP-3000L usr]# vi /etc/profile

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event2

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export TSLIB_CALIBFILE=/etc/pointercal   

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  

export TSLIB_FBDEVICE=/dev/fb0  

export TSLIB_CONSOLEDEVICE=none

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

 

其中,TSLIB_ROOT更換爲自己實際存放的路徑;

另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO這兩項需要查看自己的板子的觸摸屏設備對應/dev/input/下那個文件

 

4-4執行測試命令,重啓開發板(使系統讀取profile環境變量),進入tslib/bin目錄,執行觸摸屏校準程序

[root@DCP-3000L usr]# ./ts_calibrate

 

如果出現tslib的觸摸屏五點校準畫面,至此,tslib的安裝移植成功完成。

也可執行此目錄下其他的程序來體驗觸摸屏!

 

 

安裝Qt4.8.6開發環境

5-1將提供的Qt4.8.6 的源碼包qt-everywhere-opensource-src-4.8.6.tar.gz拷貝到新建的目錄Qt4.8下,並解壓。

user@ubuntu:~/Qt4.8$ ls

qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ tar xf qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ ls

qt-everywhere-opensource-src-4.8.6  qt-everywhere-opensource-src-4.8.6.tar.gz

user@ubuntu:~/Qt4.8$ cd qt-everywhere-opensource-src-4.8.6/

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ ls

bin              demos     LGPL_EXCEPTION.txt  projects.pro  translations

changes-4.8.6    doc       lib                 qmake         util

config.profiles  examples  LICENSE.FDL         README

config.tests     imports   LICENSE.GPL3        src

configure        include   LICENSE.LGPL        templates

configure.exe    INSTALL   mkspecs             tools

 

5-2接下來要對源碼進行配置編譯再安裝,因爲針對嵌入式平臺需要進行一些針對性配置,這裏生成一個自動配置文件,可以通過修改文件來方便的更改配置。

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ touch autoconfig.sh

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ vi  autoconfig.sh

user@ubuntu:~/Qt4.8/qt-everywhere-opensource-src-4.8.6$ chmod a+x autoconfig.sh

//在 autoconfig.sh中輸入以下內容,按下ESC,輸入:wq保存退出

./configure \

-confirm-license \

-embedded arm \

-xplatform qws/linux-arm-gnueabi-g++ \

-release \

-opensource  \

-fast  \

-stl \

-no-accessibility  \

-no-scripttools  \

-no-mmx  \

-no-multimedia  \

-no-svg  \

-no-3dnow  \

-no-sse  \

-no-sse2  \

-no-libmng  \

-no-libtiff  \

-no-multimedia  \

-silent  \

-qt-libpng  \

-qt-libjpeg  \

-make libs  \

-nomake tools \

-nomake examples \

-nomake docs  \

-nomake demos \

-nomake translations \

-no-nis \

-no-cups \

-no-iconv  \

-no-dbus  \

-no-openssl  \

-little-endian \

-qt-freetype  \

-depths all \

-qt-gfx-linuxfb  \

-no-gfx-transformed  \

-no-gfx-multiscreen  \

-no-gfx-vnc  \

-no-gfx-qvfb  \

-qt-kbd-linuxinput  \

-no-glib  \

-qt-zlib \

-no-phonon \

-no-phonon-backend \

-no-webkit \

-no-javascript-jit \

-no-sql-db2  \

-no-sql-ibase \

-no-sql-oci \

-no-sql-odbc \

-no-sql-psql \

-qt-sql-sqlite \

-plugin-sql-sqlite \

-no-sql-sqlite2 \

-no-sql-mysql \

-no-sql-tds \

-no-neon \

-no-qt3support \

-qt-mouse-linuxinput \

-qt-mouse-tslib \

-plugin-mouse-tslib \

-no-mouse-linuxtp \

-no-script \

-no-largefile \

-I /home/user/libfile/tslib/include \

-L /home/user/libfile/tslib/lib

 

 

上面的主要參數含義說明如下
-embedded arm: 表示將編譯針對 arm 平臺的 embedded 版本; 
-xplatform qws/linux-arm-gnueabi-g++ \ 表示使用 linux-arm-gnueabi- 交叉編譯器進行編譯
-qt-mouse-tslib: 表示將使用 tslib 來驅動觸摸屏;

-I /home/user/libfile/tslib/include  

-L /home/user/libfile/tslib/lib   對應的就是上一步移植的tslib的頭文件和庫文件路徑

如果需要指定安裝路徑可以在開始加入-prefix=/usr/local/(自己的路徑),這裏使用默認路徑

/運行./autoconfig.sh 生成makefile文件

 

過程可能或出現的問題及解決方法:

1

make: g++: Command not found

make: *** [project.o] Error 127

針對這個問題是因爲g++沒有安裝,通過sudo apt-get install g++安裝。

如有必要還要安裝sudo apt-get install build-essential

 

2

在安裝g++完成後再次運行./configure後不會再報未發現g++之類的錯誤,可是又出現了"Basic XLib functionality test failed!”

對於這個錯誤時因爲沒有安裝xlib庫造成的,安裝即可解決。

首先:sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev

然後:sudo apt-get install build-essential

 

5-3./autoconfig.sh 配置完成後,可以看到下面信息,說明配置已經這一步已經成功

Qt is now configured for building. Just run 'make'.

Once everything is built, you must run 'make install'.

Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.8.6-arm

To reconfigure, run 'make confclean' and 'configure'.

 

5-4接下來執行make 進行編譯,編譯時間會經歷很久,視個人電腦配置而定

5-5最後make install安裝,安裝完成後可以在安裝目錄/usr/local/Trolltech/QtEmbedded-4.8.6-arm 下查看對應文件

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# make

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# make install

root@ubuntu:/home/user/Qt4.8/qt-everywhere-opensource-src-4.8.6# ls /usr/local/Trolltech/QtEmbedded-4.8.6-arm/

bin  include  lib  mkspecs  plugins

 

5-6定義Qt環境變量,使用vi命令修改~/.bashrc,在~/.bashrc底部加入一下定義

alias qmake-arm=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake

 

5-7配置Qt環境變量,使用vi命令修改~/.profile,在~/.bashrc底部加入一下定義

Export QMAKESPEC=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/mkspecs/qws/linux-arm-gnueabi-g++

5-8使用source 命令讓配置生效

user@ubuntu:~$ source ~/.bashrc

user@ubuntu:~$ qmake-arm -v

QMake version 2.01a

Using Qt version 4.8.6 in /usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib

user@ubuntu:~$ source ~/.profile

到此,Qt開發環境已經安裝完成

 

6 進行Qt到開發板的配置

6-1拷貝上一步搭建好的Qt開發環境庫文件至開發板

6-2打開環境變量文件/etc/profile,並添加相應內容設置環境變量

export QTDIR=/opt/qt4.8.6

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

export QT_QWS_FONTDIR=QTDIR/lib/fonts

 

7 軟件源碼編譯

7-1將提供的源碼拷貝到主機自己的工作文件夾下並解壓

user@ubuntu:~/Work$ ls

src.tar.bz2

user@ubuntu:~/Work$ tar xvf src.tar.bz2

user@ubuntu:~/Work$ ls src

charger      charger.yml       communication  lib       README.md  state      charger.pro  charger_zh_CN.qm  config         main.cxx  resource   utils  charger.qss  charger_zh_CN.ts  include        Makefile  run.sh     view

 

7-2編譯源碼使用一下命令,第一次編譯需要等待一小段時間

user@ubuntu:~/Work/src$ qmake-arm

user@ubuntu:~/Work/src$ make

 

7-3接下來就是運行軟件,將運行的軟件需要的文件放入新建的tcu文件夾下:

user@ubuntu:~/Work$

user@ubuntu:~/Work$ cp src/charger ./tcu

user@ubuntu:~/Work$ cp src/charger.qss ./tcu

user@ubuntu:~/Work$ cp src/charger.yml  ./tcu

user@ubuntu:~/Work$ cp src/charger_zh_CN.qm   ./tcu

user@ubuntu:~/Work$ cp src/run.sh   ./tcu

user@ubuntu:~/Work$ cp src/config    ./tcu  -rf

user@ubuntu:~/Work$ cp src/resource    ./tcu  -rf

user@ubuntu:~/Work$ ls tcu/

charger  charger.qss  charger.yml  charger_zh_CN.qm  config  resource  run.sh

 

7-4tcu文件夾拷貝到計費單元的文件系統中,使用以下命令啓動計費單元軟件

[root@DCP-3000L tcu]# /sbin/ip link set can0 type can bitrate 125000 restart-ms  1000

[root@DCP-3000L tcu]# ifconfig can0 up

[root@DCP-3000L tcu]# ./run.sh

 

 

 

 

8  QtCreator 的安裝和配置

8-1前面已經編譯了Linux下的ARM平臺的QT庫,下面就針對QtCreator這個IDE進行相應的配置,方便進行應用程序的開發類似於之前的操作,先創建一個文件夾,QtCreator,然後拷貝可執行文件至目錄下。直接執行按照嚮導完成安裝

user@ubuntu:~$ make QtCreator

user@ubuntu:~/QtCreator$ ls

qt-creator-linux-x86-opensource-2.4.1.bin

user@ubuntu:~/QtCreator$ ./qt-creator-linux-x86-opensource-

2.4.1.bin

 

8-2安裝完畢後,按照下面步驟完成必要的配置:

1在主界面中從菜單欄點擊"工具"->"選項"->在左側點擊“構建和運行”界面如下圖所示。

 

從圖中可以看到,IDE並沒有自動識別安裝的QT,這是因爲在缺乏系統環境變量的情況下,不知道程序安裝到了什麼地方,所以這裏需要手動設置,手動設置很簡單,只需要點擊添加編譯的QT安裝文件中的qmake文件即可,注意是安裝文件,並不是之前解壓的源文件。

默認的安裝路徑爲/usr/local/Trolltech這個文件夾下,具體路徑可以參見上圖

到這裏就告訴IDE 安裝QT的位置了,由於需要進行編譯開發,接下來還需要指定編譯器,點擊“編譯器”選項卡,如下圖所示。

 

如圖中所示,Qt Creator已經檢測到X86的GCC,而我們要是做arm平臺開發的話還需要指定用於arm開發的交叉工具鏈,我的安裝路徑爲/home/user/toolchain/arm-2014.05/bin/需要指定g++文件,如圖中所示。配置完成後,點擊“應用”。

到此,就可以很方便的開始使用QtCreator這個強大的IDE來進行軟件開發

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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