软件 环 境 搭建参 考 文 档
简介:
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来进行软件开发