FL2440下的QT安装编译过程介绍
2016-04-07 23:14
585 查看
【1】环境介绍
宿主机:CentOS-6.7-x86_64交叉编译器: buildroot-2012.08
开发板根文件系统:initramfs
需要的软件包:【buildroot-2012.08】
【qt-everywhere-opensource-src-4.8.5.tar.gz】
【tslib-1.4.tar.gz】下载地址:http://download.csdn.net/detail/xiehongjun_hee/9484948
【2】相关安装
相关软件已经放出来了,交叉编译的制作以及开发板根文件系统的制作,可以在网上找相关教程安装,这里不做赘述。【3】安装编译tslib
(1)建立工作目录$ cd ~ $ sudo mkdir /usr/local/tslib $ sudo mkdir /usr/local/qt4.8.5-arm $ mkdir qt-arm $ cd qt-arm
(2)此外如果linux里还没有automake、libtool 两个工具可以用yum进行安装
#yum install automake #yum install libtool
(3)在安装编译tslib之前要做的一个工作是添加环境变量,把交叉编译器的的路径加入到PATH中(具体情况需根据自己的情况来加入,我的交叉编译器路径为:/opt/buildroot-2012.08/arm920t/usr/bin。为操作方便我大多操作都已经进入root模式。),现在提供两个方法:
#export PATH=$ /opt/buildroot-2012.08/arm920t/usr/bin
(注意“=”两边不能有空格,不然会提示如下错误: ”bash: export: not a valid identifier“)
# vi ~/.bashrc
在最后把/opt/buildroot-2012.08/arm920t/usr/bin添加进去,如:
PATH=$PATH:/opt/buildroot-2012.08/arm920t/usr/bin
之后在执行 #source ~/.bashrc ,使设置的环境变量生效。最后可以检是否将路径添加到PATH中:
#echo $PATH
如果成功,在显示的内容中会有交叉编译器的路径:/opt/buildroot-2012.08/arm920t/usr/bin
(4)编译安装tslib,将源码包复制解压
4000
到当前工作目录(我的源码包都放在tftp下)
$cp /tft/tslib-1.4.tar.gz ./ $tar zxvf tslib-1.4.tar.gz $cd tslib
# ./autogen.sh # ./configure CC=arm-unknown-linux-uclibcgnueabi-gcc CXX=arm-unknown-linux-uclibcgnueabi-g++ - -prefix=/usr/local/tslib - -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
(这里是配置tslib,安装路径可以通过- -prefix的参数设置,我这里是安装到/usr/local/tslib下,另外CC和CXX需根据自己的交叉编译器进行指定)
#make && make install
(进行编译安装,完成以后tslib会按参数设置安装到/usr/local/tslib下,进入下一步之前,先将/usr/local/tslib/etc/ts.conf文件第二行“ #module_raw input ”注释去掉,变为“ module_raw input ”,注意一定要顶格)
【4】编译安装qt
(1)同tslib,先对qt-everywhere-opensource-src-4.8.5.tar.gz进行解压$ cd ~/qt-arm $ cp /tftp/qt-everywhere-opensource-src-4.8.5.tar.gz ./ $ tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz $cd qt-everywhere-opensource-src-4.8.5
(2)指定交叉编译器
# vim mkspecs/qws/linux-arm-g++/qmake.conf
对里面的参数进行修改,将arm-linux-全部替换arm-unknown-linux-uclibcgnueabi-(注意:根据自己编译器而定,并且一定要先将交叉编译器的路径加入PATH变量中),并加上-lts,最后保存退出。如下
(3)然后就是配置qt,同样的,要对qt使用 –prefix 指定安装路径,-I后面指定上一步tslib的include路径,-L后面指定上一步tslib的lib路径:
# sudo mkdir /usr/local/qt4.8.5-arm
# ./configure -prefix /fl2440 -debug-and-release -qt3support -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake examples -nomake demos -nomake docs -no-cups -iconv -xplatform qws/linux-arm-g++
-embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-dbus -qt-sql-sqlite -qt-kbd-qvfb -qt-kbd-tty -qt-mouse-pc -no-glib -plugin-mouse-tslib -I/home/mytslib/include /home/ mytslib/lib -D _ _ ARM_ARCH_5TEJ_ _
分别输入 o 和 yes ,表示你想要使用开源的以及接受条款
这里你可能会遇到几个问题
1.
The tslib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in ******************(linux-arm-g++的地址)
解决方法:
请重新设置PATH环境变量,如果还是不能解决,再修改mkspecs/qws/linux-arm-g++/qmake.conf,将交叉编译工具改为绝对路径,然后重新使之生效。如前文设置
2.The target system byte order could not be detected!Turn on verbose messaging (-v) to see the final report.You can use the -little-endian or -big-endian switch to
./configure to continue.
这是因为你在./configure配置参数是没有 加上 “ -little-endian”“-xplatform qws/linux-arm-g++”(一般是采用小端字节序)。这个时候选择执行
#./configure -little-endian
就可以了。但奇怪的是我这样操作执行时会反复提示这个问题, 最后我在 ./configure 添加上述参数时就好了。
(4)编译安装
#make && make install
这里编译时间稍微长一点,之后会安装到/usr/local/qt4.8.5-arm下
【4】配置与移植QT
(1)设置环境变量#export PATH=$PATH:/usr/local/qt4.8.5-arm/bin #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib
(2)移植
需要移植的文件有编译后的 tslib 和 qt 目录下的 lib 。为方便操作,先将两个文件进行压缩:
$ cd /usr/local/qt4.8.5-arm $ tar -zcf lib.tar.gz lib $ cd /usr/local $tar -zcf tslib.tar.gz tslib
然后将压缩文件复制到开发板上(注:tftp或者用U盘挂载),再解压:
mkdir -p /usr/local/qt4.8.5-arm tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm tar xzvf tslib.tar.gz -C /usr/loacal
在开发板上设置环境变量,在此之前先建立一个文件:setqt,并输入内容
vi setqt
export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH export QTDIR=/usr/local/qt4.8.5-arm export T_ROOT=/usr/local/tslib 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/input/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/ input/event0 export QT_QWS_FONTDIR=$QTDIR/lib/fonts
然后设置好qt的环境变量:
source setqt
最后qt就可以使用了
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍