基于QTE的无线KTV点播系统开发环境建立

简介:  一、安装虚拟机软件VMware Workstation 二、安装linux操作系统 虚拟机软件安装完成后,就可以在里面安装linux操作系统,这里我使用的 Ubuntu10.04长期支持版。

 安装虚拟机软件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编写程序的过程中,如果需要交叉编译并移植到开发板执行,一般中文都无法正常显示,所以需要在程序中指定使用的文本编码以及使用的字体。

目录
相关文章
|
7月前
|
数据采集 编解码 监控
Android对接实现内网无纸化会议|智慧教室|实时同屏功能
本文主要讲的是基于Android平台实现RTMP的技术方案设计,基础架构图如下:
Android对接实现内网无纸化会议|智慧教室|实时同屏功能
|
1月前
|
数据采集 数据可视化 测试技术
五台山风景区旅游模拟漫游系统的设计与实现_kaic
五台山风景区旅游模拟漫游系统的设计与实现_kaic
|
3月前
|
数据采集 搜索推荐 JavaScript
Uniapp连接iBeacon设备——实现无线定位与互动体验(理论篇)
Uniapp连接iBeacon设备——实现无线定位与互动体验(理论篇)
85 0
|
3月前
Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)
Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)
46 0
HMI-44-【多媒体】开启新篇章
今天收到了艺术家发来的第一个多媒体的资源文件,菜单界面做好了,让我看看吧。后面我们将努力吧这个实现了。
堪比文件传输助手!解决文本、图片、视频、音乐跨设备同步难题!
一款比文件传输助手更好用的跨设备文件同步插件,支持剪藏和文件管理,效率翻倍!
|
7月前
|
运维 监控 安全
软件源码开发,网络中的“摄像头”:运维监控系统
总之,监控运维系统在软件源码开发平台中有着不可或缺的作用,通过以上分析,可以看出监控运维系统不只是监控着服务器、数据库、操作系统等,还可以为软件源码开发平台运维团队提供资源管理、容量规划、日志与事件记录等作用,确保着软件源码开发平台的系统和服务的正常运行。
软件源码开发,网络中的“摄像头”:运维监控系统
H8
|
8月前
|
自然语言处理 物联网 Unix
全网最佳IoT命令行超级工具箱|帮你轻松解决百万物联网设备测试和联调
作为一个物联网开发和学习人员,IoT设备协议的测试联调是工作中很重要的一环!我有很多时刻都想拥有一个能集成常见物联网协议的客户端工具可供使用。经过我一通查找,发现和我拥有相同问题的人不在少数。 不仅仅是IoT开发者,包括云厂商、网络运营商都有相同烦恼: 开源物联网平台Thingsboard: coap -> coap.js(需要安装node); 移动OneNET平台: mqtt -> mqtt.fx(几年没更新了); 电信AEP平台:自定义TCP协议 -> sokit工具(只支持windows); 阿里云物联网平台: Nb-IoT协议 -> 需要到电信或移动平台上进行测试; 作者:穆书伟
H8
284 0
|
8月前
|
API 开发者
HarmonyOS学习路之开发篇—网络与连接(电话服务)
电话服务系统提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。
|
9月前
|
人工智能 缓存 小程序
融合人脸识别、即时通讯等技术,实现家校互通的智慧班牌系统源代码
电子班牌系统又称之为智慧班牌,是当前校园数字化信息化建设、文化建设的主流,是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上,融合了人脸识别、即时通讯等新技术,与智慧校园中各类系统互联互通,将课堂学情分析、考勤管理、德育评比、教务考务、物联控制、家校互通等业务进行有机融合,实现了一个终端多种应用。