红联Linux门户
Linux帮助

ARM9开发板Qt环境的搭建

发布时间:2014-11-08 10:44:21来源:linux网站作者:jia0511

注意:不要使用自带或使用apt-get 安装的 QT,如有,则删除。开发板须能挂载NFS。本文采用了别人的教材,只是自己稍加上修改,因为刚开始找文件做的时候发现很多容易出错的,这里都加以说明了

所需原文件:

a. arm-linux-gcc-3.4.1.tar.bz2

 b. Qt-4.6.3-arm.tar.bz2

c. Qt-4.6.3-x86.tar.bz2

d. Qt-4.7.0.tar.bz2

e. Qt-sdk-linux-x86-opensource_2010.02.bin

f. tslib-1.4.tar.gz


操作步骤:

1、检查电脑上有没有g++ : g++ --version,

如果没有,请使用下面命令安装: sudo apt-get install g++

2、检查有没有arm-linux-gcc: arm-linux-gcc –version,

如果没有,请使用步骤4 进行安装,如果有,则跳 过步骤4、

4、解压arm-linux-gcc-3.4.1.tar.bz2

sudo tar jxvf arm-linux-gcc-3.4.1.tar.bz2 -C / 自动解压到usr/local

进入/usr/local/arm/3.4.1/bin/ 输入pwd

设置到环境变量:sudo gedit /etc/environment

在其中按照格式添加::/usr/local/arm/3.4.1/bin (arm-linux-gcc 路径)

保存后source /etc/environment (使刚才的环境变量生效)

arm-linux-gcc 检查是否命令是否存在

5、解压安装触摸屏驱动

# sudo apt-get install libtool
# sudo apt-get install autoconf
#sudo apt-get install automake
#tar xzvf tslib-1.4.tar.gz
#cd tslib
# ./autogen.sh
# CC=arm-linux-gcc
# echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
# ./configure --prefix=/opt/ts/ --host=arm-linux --cache-file=arm-linux.cache
# make
# sudo make install

可能有参数错误在文件下/tests/calibrate.c 文件的227、229 行参数后面补0 再重新

make

6、把编译好的触摸屏驱动加到板子上

6.1、将交叉编译好的ts 文件cp 到开发板中对应的目录下,其中的include

目录和lib 下的pkgconfig 目录可以不拷贝。

cp -rf /opt/ts /home/zrx/s3c2440_recover/opt/ts 􀃍注意这个路径

你的主机NFS 文件地址

6.2、检查ts/etc/ts.conf 内容:

1 module_raw input #把第二行前面的“# ”去掉
2 module pthres pmin=1
3 module variance delta=30
4 module dejitter delta=100
5 module linear

注意去掉“#”号时,前面的空格一定要去掉,否则后面会出段错误。

7、ARM 板上配置环境: (板子和电脑之间)

编辑目标环境下(/home/zrx/s3c2440_recover/etc)的/etc/profile, 在文件后面添加如下内容:

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
export QTDIR=/usr/local/Trolltech/Qt-4.6.3-arm //注意这个路径
export QPEDIR=$QTDIR
export T_ROOT=/opt/ts 注意这个路径
export PATH=$T_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_KEYBOARD=USB:/dev/input/event1
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export QWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0
export QWS_SIZE=320x240

5、拷贝QT 库文件

在目标环境中(/home/zrx/s3c2440_recover)

建立与编译QT-arm 一样的路径:

mkdir /usr/local/Trolltech/Qt-4.6.3-arm/lib /fonts/

上面要逐级建立目录

cp -rf /usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts

/home/zrx/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib 注意这个路径

主机NFS

把以下的库文件从编译主机中的lib (/usr/local/Trolltech/Qt-4.6.3-arm/lib)复制目录中

的四个库文件复制到

目标板的lib (/home/zrx/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib )

libQtCore.so.4.6.3

libQtGui.so.4.6.3

libQtNetwork.so.4.6.3

libQtSql.so.4.6.3

每个库文件创建有3 个连接:*.so,*.so.4,*.so.4.6 *.so.4.6.3,可以使用如下命令:

ln –s libQtCore.so.4.6.3 libQtCore.so.4.6
ln –s libQtCore.so.4.6.3 libQtCore.so.4
ln –s libQtCore.so.4.6.3 libQtCore.so

ln –s libQtCore.so.4.6.3 libQtGui.so.4.6
ln –s libQtCore.so.4.6.3 libQtGui.so.4
ln –s libQtCore.so.4.6.3 libQtGui.so

ln –s libQtCore.so.4.6.3 libQtNetwork.so.4.6
ln –s libQtCore.so.4.6.3 libQtNetwork.so.4
ln –s libQtCore.so.4.6.3 libQtNetwork.so

ln –s libQtCore.so.4.6.3 libQtSql.so.4.6
ln –s libQtCore.so.4.6.3 libQtSql.so.4
ln –s libQtCore.so.4.6.3 libQtSql.so

这些命令一定要用手写才能运行正确

其他几个文件操作相同

常用字库文件wenquanyi_120_50.qpf 复制到NFS 目标板共享目录下的的

usr/local/Qt-4.6.3/lib/fonts/

6、启动开发板,并且使用刚才配置的NFS 的共享目录作为开发板的文件系统,

进入bootloader 后,设置启动参数:

1 setenv bootargs 'console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.200:/home/fox/utuLinux2.6.24/s3c2440_recover_nogui ip=192.168.1.168:192.168.1.200:192.168.1.1:255.255.255.0:www.huiwen.com:eth0:off '

楼上的命令行主要,他是一句,中间有空格没有回车

注意:/home/(用户自己)/utuLinux2.6.24/s3c2440_recover_nogui
其中192.168.1.200是开发板服务的地址,可能是你的电脑或者是虚拟机的ip

保存启动参数:saveenv

boot 启动后可以看看env 命令输出的内容中有没有前面设置的环境变量,还可以启动后对tslib 进行校准,输入命令:ts_calibrate,也可以使用命令ts_test 对tslib 进行测试。

7、测试运行

编写一个简单的helloQT.cpp

#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QLabel label("Hello World !");
label.show();
return app.exec();
}

7.1、然后重新打开终端窗口,依次输入如下命令:

1 ~$ source /usr/local/Trolltech/Qt-4.7.0/setenv.sh
2 ~$ qmake –project
3 ~$ qmake
4 ~$ make
5 ~$ ./helloQT

这些命令要用手动敲入,并且一个.cpp文件只能由一个文件夹匹配否则编译的时候会出错,会出现好几个main编译

最后会看到helloQT 的运行结果。

7.2、如果是要进行x86 环境下的helloQT 的测试,则要使用如下的命令:

1 ~$ source /usr/local/Trolltech/Qt-4.6.3-x86/setenv.sh
2 ~$ qmake –project
3 ~$ qmake
4 ~$ make
5 ~$ qvfb –width 320 –height 240 &
6 ~$ ./helloQT -qws

7.3、如果要在arm 环境下执行helloQT

1 ~$ source /usr/local/Trolltech/Qt-4.6.3-arm/setenv.sh
2 ~$ qmake –project
3 ~$ qmake
4 ~$ make
5 ~$ cp helloQT /home/zrx/s3c2440_recover/home 

注意这个路径

启动开发板,并/home/zrx/s3c2440_recover 作为工作文件系统,启

动后在开发板的Linux 中运行如下命令:

1 ~$ ./home/helloQT -qws

8 安装Qt-sdk-linux-x86-opensource_2010.02.bin UI 开发环境

1 sudo ./Qt-sdk-linux-x86-opensource_2010.02.bin

*注意:

*1. 如果在make 时提示缺少libts.so,这时可以在经过qmake 自动生成的Makefile 后,打开Makefile,在LFLAGS 中加入-lts

1 LFLAGS = -Wl -lts -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.6.3-arm/lib

*2. 如果在运行的时候提示无法创建/tmp/xxxx, 有在开发板上运行:

mkdir /tmp

*3. 如果在运行时提示缺少libstdc++.so.4,这时可以在开发板Linux 上运行:

1 ln –s /lib/libstdc++.so.60.0.3 /lib/libstdc++.so.4