Linux系统下的ARM环境搭建
一、安装交叉编译器
交叉编译器根据个人的开发需要去下载。
- 复制交叉编译器压缩包arm-linux-gcc-4.5.1-v6-vfp-20120301到虚拟机根目录下的 /opt 文件下,然后解压到此处。
- 添加环境变量
使用指令 vim /etc/profile 打开文件,在文件中添加以下内容:
export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin/:$PATH
如图所示:
使用:wq 命令保存退出。
使用source /etc/profile 指令或 重启虚拟机使添加的环境变量生效
查看环境变量是否生效
关闭当前终端,重新打开一个命令行终端,输入arm-linux-gcc -v 看是否能输出编译器版本信息。
如果安装成功可以看到以下信息:
如果输出的版本信息是:Error。
错误说明:因为你的操作系统是Ubuntu 64位的,而交叉编译工具链都是32位执行程序。要成功运行这些交叉编译工具链,需要与这些工具链相关的32位库。
安装库命令如下:
sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6
安装完成重新编译即可。
二、安装tslib库
把可用的tslib库拷贝到opt目录下,然后解压即可。。
在red hat 中安装tslib库比较麻烦,用直接编译好的即可。
附:如果想自己移植请参考相关资料
注:可在我主页下载系统环境搭建所需要的全部源码包。
三,QT移植
- 安装包下载下载地址
http://download.qt.io/archive/qt/4.8/4.8.7/
- 把下载后的安装包拷贝到linux中,注意不要直接用拖动的方法,这种方法有可能导致丢包。可以拷贝到共享目录后再从linux中拷贝。
- 创建Makefile文件
把以下命令编写成一个脚体文件执行(也可以直接在命令行中执行),注意不要带注释。并且\后面不能有任务内容,包括空格,不然运行会报错
#!/bin/bash
./configure \ #执行的可执行文件
-opensource \ #支持开源
-confirm-license \ #已配置的许可证
-prefix /opt/Qt-4.8.7-tiny4412 \ #QT安装路径 ,可以自行更改
-little-endian \ #小端模式
-silent \ #编译时不输出无用信息
-shared \ #编译共享库
-release \ #编译发行版
-embedded arm \ #移植到arm平台
-xplatform qws/linux-arm-g++ \ #编译平台 .cpp 用的是g++
-platform qws/linux-x86-g++ \ *一定要加这个,否则configure时假如你gcc版本太低会报错
-webkit \ #浏览器
-qt-gfx-transformed \
-qt-libtiff \ #使用QT自带的tiff库
-qt-libmng \#使用QT自带的mng库
#-gif \ #使用QT自带的gif库
-qt-mouse-tslib \ #使用tslib作为QT的使用输入
-qt-mouse-pc \ #支持鼠标
-no-mouse-linuxtp \ #不支持触摸屏
-no-neon \
-qt-libjpeg \#使用QT自带的jpeg库
-qt-libpng \#使用QT自带的png库
-qt-zlib \#使用QT自带的zlib库
-nomake tools \ #不编译工具
-I /opt/tslib-1.0-tiny4412/include \ #包含文件 根据实际情况去更改
-L /opt/tslib-1.0-tiny4412/lib #连接
- 执行上一步写的脚本
- 修改qmake.conf 文件
命令: gedit mkspecs/qws/linux-arm-g++/qmake.conf
修改前:
# qmake configuration for building with arm-linux-g++
#
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gcc
QMAKE_CXX = arm-linux-g++
QMAKE_LINK = arm-linux-g++
QMAKE_LINK_SHLIB = arm-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip
load(qt_config)
修改后:
# qmake configuration for building with arm-linux-g++
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf 添加连接ts库
QMAKE_CC = arm-linux-gcc –lts #注意 中间有个空格
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip
load(qt_config)
- 编译安装
终端中输入 make && make install 命令。
此编译过程需要很长时间。按小时来算。。。 - 编译完成
- 把安装路径下的文件复制到开发板中
linux系统下的opt目录下的Qt-4.8.7-tiny4412 和tslib-1.0-tiny4412 复制到开发板中的opt目录下。(此目录可以自行定义,只是我的脚本中写的是此目录)
- 在开发板的opt目录下创建ts库脚本,用于添加ts库的环境变量。
[root@localhost opt]# touch tslib_run.sh
在此脚本中输入以下内容:
#!/bin/sh
export T_ROOT=/opt/tslib-1.0-tiny4412 #开发板中的目录
export PATH=$PATH:$T_ROOT/bin #可执行程序目录加入环境变量
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH #库文件目录
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0 #framebuffer设备文件
#如果输入ts_test 无效,则有可能是此路径不对。
export TSLIB_TSDEVICE=/dev/event0 #触摸屏设备文件,有些人的路径为/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal #指定触摸屏校准文件pintercal的存放位置
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf #tslib模块配置文件
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts/ #tslib插件库目录
保存退出,在终端输入如下指令
环境变量生效指令 :source tslib_run.sh
- 在开发板的opt目录下创建qt库脚本,用于添加qt库的环境变量。
[root@localhost opt]# touch qt_run.sh
在此脚本中输入以下内容:
#!/bin/sh
export set QTDIR=/opt/Qt-4.8.7-tiny4412 #QT相关路径
export set LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH #库路径
export set PATH=$QTDIR/bin:$PATH
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts #qt字体库目录 (QT5 无效)
#触摸屏 、鼠标,可以通过/proc/bus/input/device看到 ,如果没有,重新编译zImage,把触摸屏驱动添加
export set QWS_MOUSE_PROTO='tslib:/dev/event0 IntelliMouse:/dev/mice' #有些人的此路径有可能为'tslib:/dev/input/event0'
#export set QWS_DISPLAY='/dev/fb0'
export QT_PLUGIN_PATH=$QTDIR/plugins
export QWS_SIZE=800x480 #LCD尺寸
保存退出,在终端输入如下指令
环境变量生效指令 :source qt_run.sh
- 给以上两个脚本添加权限。
[root@localhost opt]# chmod 0777 tslib_run.sh
[root@localhost opt]# chmod 0777 qt_run.sh
- 测试,在开发板中操作
1.)ts库生效并测试
2)qt库生效
[root@ /opt chenxingxing]# source qt_run.sh
3)如果需要开机运行,则需要把这两个脚本在etc/profile 中添加生效命令。
至此,Linux-ARM环境搭建完成。