一、安装虚拟机软件VMware Workstation
二、安装linux操作系统
虚拟机软件安装完成后,就可以在里面安装linux操作系统,这里我使用的
Ubuntu10.04长期支持版。1、安装完成后,进入登陆界面无法使用键盘,解决
办法为:在登陆界面右下角单击小人图案,再单击“Universal Access
Perferences”,在弹出的对话框中选中“Use on-screen keyboard”。重新启动系统
,这时就可以通过上面的步骤打开屏幕键盘,输入相应的密码登陆,登录后
键盘功能正常使用。进入系统之后,要修改/etc/default/console-setup文件的内
容 为XKBMODEL="pc105" XKBLAYOUT="us" XKBVARIANT=""XKBOPTIONS="" 然后重
启,这样在登入界面时就可能使用键盘了。2、添加管理员用户:在命令行输
入:sudo passwd root,输入两次密码后添加root账户成功,重启,使用root账
户登录。3、设置软件源:首先备份源列表:cp /etc/apt/sources.list
/etc/apt/sources.list_backup然后用gedit或其他编辑器打开: gedit
/etc/apt/sources.list,到官方选中合适的源,这里我们选择163的源,具体为:
deb http://mirrors.163.com/ubuntu/ lucid main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ lucid-backports main restricted universe multiverse
替换掉文件中所有的内容保存编辑好的文件。然后刷新列表:
apt-get update
因为经常会用到终端:所以把终端加到右键菜单:
apt-get install nautilus-open-terminal
至此我们的Linux操作系统基本安装成功。但是语言还是英文,大家可以根据
自己喜好是否调整为中文,调整方法,打开system菜单下administration下的
language support,出现语言配置对话框,然后你可以选中最下面的
installl/removae language安装中文或者其他语言,在调整后重系统起效!
三、安装QT开发工具
安装LinuxPC机下的IDE开发工具Qt Creator
下载最新版本的Qt SDK for Linux/X11 32-bit** (370 Mb),里面包括Qt4.6.3以及Qt IDE
开发工具Qt Creator,由于下载的编译好的二进制包,所以只需要改变一下文
件的属性,变为可执行,命令为:chmod +x qt-sdk-linux-x86-opensource-
2010.04.bin
这样就可以在文件所在的目录里执行一下命令进行安装:
./qt-sdk-linux-x86-opensource-2010.04.bin
安装完成后会在桌面新建一个Qt Creator快捷方式。
安装标准C开发环境
apt-get install build-essential libncurses5-dev
安装交叉编译器
进入交叉编译器压缩包所在目录,执行命令:
tar xjvf arm-linux-gcc-3.4.6.tar.bz2 -C /usr/local/
设置环境变量:gedit ~/.profile在文件最后添加:
export PATH=$PATH:/usr/local/gcc-3.4.6/arm-linux/bin
使环境变量立即生效,执行命令:
source ~/.profile
交叉编译tslib触摸屏库
进入tslib-1.4.tar.bz2压缩包所在目录解压,执行命令:
tar xjvf tslib-1.4.tar.bz2
进入解压后的目录:cd tslib-1.4 修改脚本:
gedit build.sh
文件内容修改为:
#/bin/sh
export CC=arm-linux-gcc
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache -prefix=/usr/local/tslib
make
make install
保存退出,并执行命令:./build.sh
执行完成后就将tslib安装到了/usr/local/tslib下。
交叉编译Qt 4.6.3
进入压缩包所在目录,执行命令解压:
tar xzvf qt-everywhere-opensource-src.tar.gz
进入解压后的目录:
cd qt-everywhere-opensource-src
修改错误文件:
gedit src/3rdparty/freetype/include/freetype/config/ftconfig.h
将第330行修改为:"orr %0, %0,%2, lsl #16/n/t" /* %0 |= %2 << 16 */
执行以下命令开始配置:
./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-
pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-
tslib -no-glib -prefix /usr/local/qte4.6.3 -embedded arm -release -shared -fast -no-
largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-
sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs
-nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-
iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -
depths 16,18 -I/usr/local/tslib/include -L/usr/local/tslib/lib -v -D__ARM_ARCH_5TEJ__
然后输入O回车,在输入yes回车开始配置,配置完成后输入以下命令开始编
译:make
编译完成后输入以下命令开始安装:make install
完成后qte就安装到了/usr/local/qte4.6.3下。
四、交叉编译blueZ协议栈及相关依赖库
需要的安装包有:bluez-libs-3.36.tar.gz
libxml2-2.6.11.tar.gz
glib-2.14.4.tar.gz
libsndfile-1.0.17.tar.gz
libusb-0.1.12.tar.gz
dbus-1.0.2.tar.gz
bluez-utils-3.36.tar.gz
openobex-1.3.tar.gz
交叉编译 bluez-libs
Source ~/.profile
./configure -prefix=/root/bluez/bluez-libs --host=arm-linux
然后复制/root/bluez/bluez-libs/lib/pkgconfig/bluez.pc 到/usr/lib/pkgconfig
2、交叉编译libxml
./configure --prefix=/root/bluez/libxml --host=arm-linux CC=arm-linux-gcc
如果出现找不到编译器错误,则执行source ~/.profile
然后将/root/bluez/libxml/lib/pkgconfig/libxml-2.0.pc 复制到
/usr/lib/pkgconfig
3、交叉编译glib
apt-get install gettext
apt-get install libglib2.0-dev
进入解压后的目录,执行以下命令:
echo ac_cv_type_long_long=yes > arm-linux.cache
echo glib_cv_stack_grows=no >> arm-linux.cache
echo glib_cv_uscore=no >> arm-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes >> arm-linux.cache
./configure --prefix=/root/bluez/glib --host=arm-linux CC=arm-linux-gcc --cache-file=arm-
linux.cache
4、交叉编译libsndfile
./configure --prefix=/root/bluez/libsndfile --host=arm-linux CC=arm-linux-gcc
cp /root/bluez/libsndfile/lib/pkgconfig/sndfile.pc /usr/lib/pkgconfig
5、交叉编译libusb
./configure --prefix=/root/bluez/libusb --host=arm-linux CC=arm-linux-gcc
cp /root/bluez/libusb/lib/pkgconfig/libusb.pc /usr/lib/pkgconfig
6、交叉编译dbus
echo ac_cv_have_abstract_sockets=yes > arm-linux.cache
./configure --host=arm-linux --prefix=/root/bluez/dbus CC=arm-linux-gcc --cache-
file=arm-linux.cache --without-x
7、交叉编译bluez-utils
在bluez-utils-3.36/network/bridge.h中添加如下宏定义:
#define SIOCBRADDBR 0x89a0 /* create new bridge device */
#define SIOCBRDELBR 0x89a1 /* remove bridge device */
#define SIOCBRADDIF 0x89a2 /* add interface to bridge */
#define SIOCBRDELIF 0x89a3 /* remove interface from bridge */
在bluez-utils-3.36/input/storage.c加入宏定义
#define ENOKEY 161
apt-get install libbluetooth-dev
apt-get install libcwiid1
./configure --prefix=/root/bluez/bluez-utils --host=arm-linux CC="arm-linux-gcc -
I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --disable-audio
将所有目录中 makefile 文件里的 wall 改为 shared
8、交叉编译 openobex 库
./configure --prefix=/root/bluez/openobex --host=arm-linux
CC="arm-linux-gcc -I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --enable-
bluetooth --disable-usb --enable-apps
五、移植QTE以及用到的相关库
1、整理相关库并打包
进入QT库所在目录:
cd /usr/local/qte4.6.3/lib/
执行命令:
tar czvf qtlib.tar.bz2 *
将库压缩包拷贝到建立好的整理目录:
cp qtlib.tar.bz2 /home/lib/
解压库压缩包:
tar xzvf qtlib.tar.bz2
删除库压缩包:
rm -irf qtlib.tar.bz2
拷贝相关库到当前目录,首先拷贝tslib库:
cp /usr/local/tslib/lib/libts* /home/lib/
cp -rf /usr/local/tslib/lib/ts /home/lib/
然后进入交叉编译器库所在目录,拷贝需要用到的有关gcc的库:
cd /usr/local/gcc-3.4.6-glibc-2.3.6/arm-linux/arm-linux/lib
cp libgcc_s.so.1 /home/lib/
Cp librt.so.1 /home/lib/
Cp libstdc++.so.6 /home/lib/
Cp libz.so.1 /home/lib/
最后再拷贝蓝牙库:
Cp /root/bluez/bluz-libs/lib/lib* /home/lib/
所有相关库整理完成,最后打包,并将生成的压缩包下载到开发板上:
tar czvf lib.tar.bz2 lib/
2、下载其他应用程序到开发板
将触摸屏校准程序、蓝牙测试程序以及自己开发的程序都打包并下载到开发板,由于使用的是QT开发的应用程序,所以在程序执行时需要设置一些环境变量,这样程序才能正常执行,一般都将这些设置编写为一个脚本,一般的脚本内容为:
#bin/sh
export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib:/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CONSOLEDEVICE=none
export QT_TSLIBDIR=$PWD/lib
export TSLIB_CONFFILE=$PWD/etc/ts.conf
export POINTERCAL_FILE=$PWD/etc/ts-calib.conf
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
export QT_QWS_FONTDIR=/mnt/yaffs/qte/lib/fonts
cd /mnt/yaffs/bluetooth/
./start.sh
cd /mnt/yaffs/qte/bin/
rm -irf playlist
./server -qws
另外,如果需要开机启动程序,需要修改init.sh脚本,添加启动内容。
在QT编写程序的过程中,如果需要交叉编译并移植到开发板执行,一般中文都无法正常显示,所以需要在程序中指定使用的文本编码以及使用的字体。