Linux系统下的ARM环境搭建

一、安装交叉编译器

交叉编译器根据个人的开发需要去下载。

  1. 复制交叉编译器压缩包arm-linux-gcc-4.5.1-v6-vfp-20120301到虚拟机根目录下的 /opt 文件下,然后解压到此处。
  2. 添加环境变量
使用指令 vim /etc/profile 打开文件,在文件中添加以下内容:
export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin/:$PATH

如图所示:

Linux arm机器的Java下载_linux


使用:wq 命令保存退出。

使用source /etc/profile 指令或 重启虚拟机使添加的环境变量生效

查看环境变量是否生效

关闭当前终端,重新打开一个命令行终端,输入arm-linux-gcc -v 看是否能输出编译器版本信息。

如果安装成功可以看到以下信息:

Linux arm机器的Java下载_编译器_02


如果输出的版本信息是:Error。

错误说明:因为你的操作系统是Ubuntu 64位的,而交叉编译工具链都是32位执行程序。要成功运行这些交叉编译工具链,需要与这些工具链相关的32位库。

安装库命令如下:

sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6

安装完成重新编译即可。

二、安装tslib库

把可用的tslib库拷贝到opt目录下,然后解压即可。。
在red hat 中安装tslib库比较麻烦,用直接编译好的即可。
附:如果想自己移植请参考相关资料
注:可在我主页下载系统环境搭建所需要的全部源码包。
三,QT移植

  1. 安装包下载下载地址
http://download.qt.io/archive/qt/4.8/4.8.7/

Linux arm机器的Java下载_嵌入式_03

  1. 把下载后的安装包拷贝到linux中,注意不要直接用拖动的方法,这种方法有可能导致丢包。可以拷贝到共享目录后再从linux中拷贝。
  2. 创建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     #连接
  1. 执行上一步写的脚本
  2. Linux arm机器的Java下载_Linux arm机器的Java下载_04

  3. 修改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)
  1. 编译安装
    终端中输入 make && make install 命令。
    此编译过程需要很长时间。按小时来算。。。
  2. 编译完成
  3. 把安装路径下的文件复制到开发板中
    linux系统下的opt目录下的Qt-4.8.7-tiny4412 和tslib-1.0-tiny4412 复制到开发板中的opt目录下。(此目录可以自行定义,只是我的脚本中写的是此目录)

Linux arm机器的Java下载_Linux arm机器的Java下载_05

  1. 在开发板的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
  1. 在开发板的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
  1. 给以上两个脚本添加权限。
[root@localhost opt]# chmod 0777 tslib_run.sh
	[root@localhost opt]# chmod 0777 qt_run.sh
  1. 测试,在开发板中操作
    1.)ts库生效并测试

    2)qt库生效
[root@ /opt chenxingxing]# source qt_run.sh

3)如果需要开机运行,则需要把这两个脚本在etc/profile 中添加生效命令。

Linux arm机器的Java下载_编译器_06


至此,Linux-ARM环境搭建完成。