Linux开发环境的搭建
1.arm交叉编译链的安装
2.NFS服务器的安装
3.tftp服务器的安装
4.触摸屏驱动库的安装编译
5.编译安装qt-everywhere-opensource-src-4.8.1
需要的文件及库:
1.arm-2009q1-203-arm-none-linux-gnueabi
2.fs.tar.gz
3.tslib-1.4
4.qt-everywhere-opensource-src-4.8.1
1.arm交叉编译链的安装
见附录6:arm-2009q1-203-arm-none-linux-gnueabi安装
测试交叉编译器是否安装成功,执行如下命令:
HOST $ arm-none-linux-gnueabi-gcc -v
如果显示编译器的版本信息说明安装成功。
2.NFS服务器的安装
见附录7:
安装完成后,在/home/wws/目录下执行如下指令:
sudo gedit nfs.sh
nfs.sh的内容如下:
HOST $ sudo /etc/init.d/portmap restart
HOST $ sudo /etc/init.d/nfs-kernel-server restart
保存后执行source nfs.sh
以后只要在主目录下执行上述source命令就可以重启nfs服务器
测试 NFS 服务器是否安装成功,执行如下命令:
HOST $ showmount -e
若显示 /home/wws/wws_nfs*则说明安装成功。
3.tftp服务器的安装
具体安装过程见附录8:
安装完成后,执行:
sudo gedit tftp.sh其内容如下:
HOST $ sudo /etc/init.d/xinetd restart
HOST $ sudo /etc/init.d/tftpd-hpa restart
保存在主目录下,当开发板找不到链接,出现T T T T.......等时,无需重启系统,只需执行source tftp.sh重启tftp服务器即可,或者直接执行上述两条指令来重启服务器。
4.触摸屏驱动库的安装编译
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。 在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
安装触摸屏驱动库tslib-1.4
新建文件夹my_qt,在该文件夹下进行解压
解压wws@ubuntu:~/my_qt/tslib1.4$ tar -zxvf tslib-1.4.tar.gz
进入目录wws@ubuntu:~/my_qt$ cd tslib-1.4wws@ubuntu:~/my_qt/tslib1.4$
配置wws@ubuntu:~/my_qt/tslib1.4$ ./autogen.sh
若出现如下错误./autogen.sh: line 4: autoreconf: command not found
解决办法:sudo apt-get install autoconf automake libtool
指定安装目录wws@ubuntu:~/my_qt/tslib1.4$
./configure --prefix=/usr/local/Trolltech/tslib-1.4 --host=arm-none-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes
(提示:在这个配置中/usr/local/ Trolltech/tslib-1.4就是我们指定的安装路径,也就是执行make install后,tslib就被安装到这个目录了)
编译安装 wws@ubuntu:~/my_qt/tslib1.4$ make
20120726 Q:若报错提示
/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments In function ‘open’,
A:因为gcc-4.3.3对语法检查严格的结果,需要添加一个参数,即在tslib1.4/tests/ts_calibrate.c 中227行与229行,open函数中添加第三个参数0777,如下图
wws@ubuntu:~/my_qt/tslib1.4$ sudo make install
进过上述操作,就可以在/usr/local/qte-arm/tslib-1.4目录下看到相关的应用程序、共享库、配置文件等,这些库和配置文件都是要拷到文件系统的usr/lib 里面的。
编译成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹 至此在PC机上的tslib环境已经安装完成 。
5.编译安装qt-everywhere-opensource-src-4.8.1
在文件夹my_qt 下解压文件
wws@ubuntu:~/my_qt$ tar -zxvf qt-everywhere-opensource-src-4.8.1.tar.gz
进入目录
wws@ubuntu:~/my_qt$ cd qt-everywhere-opensource-src-4.8.1
配置
-prefix:预设安装目录
动态库:
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license
静态:(目前用静态库)
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license
静态(arm-none-linux-gnueabi-gcc编译链)
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-gnueabi-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license
静态:(目前用arm-arago-linux-gnueabi编译链)
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license
20120726 Q:若出现报错如下
修改
qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf如下
20120727 Q:若提示如下
/home/wws/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld:warning:libts-0.0.so.0,neededby /home/giant/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read_raw'
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_open'
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_fd'
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_config'
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_close'
/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read'
A:修改qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf
/usr/local/Trolltech/tslib-1.4/include
/usr/local/Trolltech/tslib-1.4/lib
最后两句是tslib的安装路径,如果设置不对则生成的库文件没办法支持触摸屏
然后执行 make
再执行 sudo make install
编译成功之后,配置环境变量 为了方便以后的开发,因此编写一个导入环境变量的脚本。如下
#sudo gedit setenv.sh
在文本中添加如下内容
#QTDIR is QT tool dir
QTDIR=/usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic //配置时指定的安装路径
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
导入环境变量
#source setenv.sh
测试一下
重新开一个终端,输入命令:
qmake -v
输出结果:
QMake version 2.01a Using Qt version 4.8.1 in /usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic/lib 输入命令:
which qmake
输出结果:
wws@ubuntu:~$ which qmake
/usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic/bin/qmake
证明 Qt 环境变量已经被配置成功。
在板子上安装完/usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic目录后,将PC上 QT编译生成/usr/local/Trolltech/QtEmbedded-4.8.1-ar-nostatic目录下的lib文件全部复制到上述目录下,即/usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic/lib(板子上的目录)
这里还有一步,就是讲之前编译好的tslib-1.4/lib/下的所有文件
复制到你文件系统目录usr/lib(注意原lib中的文件不要删掉)里面。
为了方便每次开机都会进入触摸屏校准程序,添加板子上的文件系统中的/etc/profile的内容如下:
export LD_LIBRARY_PATH=/usr/lib //tslib解压的目录
export TSLIB_PLUGINDIR=/usr/lib/ts //触摸屏在进行AD转换时用的插件
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf //触摸屏配置文件
export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0
在开发板/usr/bin目录下执行校准触摸屏程序:root@freescale /usr/bin$ ./ts_calibrate
校准完毕后会在/etc目录生成一个:pointercal触摸屏效准的文件。
编译QT工程
source setenv.sh
qmake –project (这一步是创建工程,生成.pro文件,要看你的源码是不是已经有工程了,如果你这个工程是用QT creater创建的,那么跳过这一步,假如你执行了,可能会报错)
qmake(生成Makefile)
make (生成arm架构下的可执行文件)
在开发板上执行程序
将生成的可执行文件放入文件系统下,在开发板上执行
root@freescale /$ ./hello -qws
本文来源:https://www.2haoxitong.net/k/doc/1c12cbd40029bd64793e2c33.html
文档为doc格式