ubuntu下linux 开发环境的搭建以及arm平台的移植

发布时间:2015-03-06 16:03:06   来源:文档文库   
字号:

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.4
wws@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

《ubuntu下linux 开发环境的搭建以及arm平台的移植.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式