軟件 環 境 搭建參 考 文 檔
簡介:
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的安裝移植成功完成。
也可執行此目錄下其他的程序來體驗觸摸屏!
5 安裝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-4將tcu文件夾拷貝到計費單元的文件系統中,使用以下命令啓動計費單元軟件
[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來進行軟件開發