嵌入式ARM linux *** 作系统中如何构建交叉开发环境?

嵌入式ARM linux *** 作系统中如何构建交叉开发环境?,第1张

这个问题相当专业了,之前我去周立功那边了解过的。

按照以下步骤进行安装

1) 安装32位的兼容库和libncurses5-dev库

在安装交叉编译工具之前需要先安装32位的兼容库和libncurses5-dev库,安装32兼容库需要从ubuntu的源库中下载,所以需要在Linux主机系统联网的条件下,通过终端使用如下命令安装:

vmuser@Linux-host ~$sudo apt-get install ia32-libs

若Linux主机系统没有安装32位兼容库,在使用交叉编译工具的时候可能会出现错误:

-bash: ./arm-fsl-linux-gnueabi-gcc: 没有那个文件或目录

在终端中使用如下命令则可以安装libncurses5-dev库。

vmuser@Linux-host ~$sudo apt-get install libncurses5-dev

如果没有安装此库,在使用make menucofig时出现如下所示的错误:

*** Unableto find the ncurses libraries or the

*** required headerfiles.

*** 'makemenuconfig' requires the ncurses libraries.

***

Installncurses (ncurses-devel) and try again.

***

make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1

make: *** [menuconfig] 错误 2

2) 安装交叉编译工具链

将交叉编译工具“gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2”文件通过U盘的方式拷贝到Linux主机的“/tmp”目录下,然后执行如下命令进行解压安装交叉编译工具链:

vmuser@Linux-host ~$ cd /tmp

vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/

vmuser@Linux-host /tmp$ # 输入vmuser用户的密码“vmuser”

执行完解压命令后,交叉编译工具链将被安装到“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0”目录下。交叉编译器的具体目录是“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin”,为了方便使用,还需将该路径添加到PATH环境变量中,其方法为:修改“/etc/profile”文件,具体 *** 作方法如下:

在终端中输入如下指令

vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示输入密码,则输入“vmuser”

用vi编辑器打开“/etc/profile”文件后,在文件末尾增加如下一行内容:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

文件修改并保存后,再在终端中输入如下指令,更新环境变量,使设置生效。

vmuser@Linux-host ~$source /etc/profile

在终端输入arm-fsl-linux-gnueabi-并按TAB键,如果能够看到很多arm-fsl-linux-gnueabi-前缀的命令,则基本可以确定交叉编译器安装正确,如下图所示。

我在3.2内核下做的,配合Xorg 1.2.4,Xinput2,Qt5.2.1。

首先,驱动程序probe的时候要声明成多点触摸的:

input_set_abs_params(input, ABS_X, 0, pdata->x_res - 1, 0, 0)

input_set_abs_params(input, ABS_Y, 0, pdata->y_res - 1, 0, 0)

input_set_abs_params(input, ABS_MT_POSITION_X,

0, pdata->x_res - 1, 0, 0)

input_set_abs_params(input, ABS_MT_POSITION_Y,

0, pdata->y_res - 1, 0, 0)

error = input_mt_init_slots(input, MAX_SUPPORT_POINTS)

pdata是board-[mach].c里面定义的platform data,如果是3.8以上的内核,你可以用device tree。

其次,提交触摸数据的时候,要提交成多点的:

for (i = 0i <MAX_SUPPORT_POINTSi++)

{

type = posdata.touch[i].xh >>6

if (type == TOUCH_EVENT_RESERVED)

continue

x = ((posdata.touch[i].xh <<8) | (posdata.touch[i].xl)) &0x0fff

y = ((posdata.touch[i].yh <<8) | (posdata.touch[i].yl)) &0x0fff

id = (posdata.touch[i].yh >>4) &0x0f

down = (type != TOUCH_EVENT_UP)

input_mt_slot(tsdata->input, id)

input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER, down)

if (!down)

continue

input_report_abs(tsdata->input, ABS_MT_POSITION_X, x)

input_report_abs(tsdata->input, ABS_MT_POSITION_Y, y)

}

input_mt_report_pointer_emulation(tsdata->input, true)

input_sync(tsdata->input)

然后,Buildroot做根文件系统的时候要选上Target packages >Libraries >Hardware handling >mtdev和Target packages >Graphic libraries and applications (graphic/text) >X.org X Window System >X11R7 Drivers >xf86-input-evdev,网上有很多文章说如何让X支持多点触摸的,那都是过去式了,现在的X和xf86-input-evdev都支持多点触摸。

最后,编译Qt开发包的时候要加上-xinput2选项,在qtbase/examples/touch里能找到触摸屏的样例代码。

1、下载并安装arm-linux-gcc

arm-linux-gcc-4.2.1的版本在http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/这里可以下载,最新版arm-linux-tools-20080623.tar.gz这个可能是4.2.4的版本,因为下面有编译4.2.4的方法还有相应的代码包,build-arm-linux-4.2.14,此版本由于过大,我没有下载。

下面的这个是ARM官方给的下载链接http://www.codesourcery.com/gnu_toolchains/arm/download.html,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu而不是arm-linux-。。。

在友善之臂官方网站http://www.arm9.net/download.asp下载arm-linux-gcc4.4.3。

2、删除之前安装有旧版本,执行

[root@localhost ~]# rm -rf /opt/arm

3、对新版本arm-linux-gcc-4.4.3进行解压(注意,如果我们加上了-C,那么就会自动解压到/usr/local/arm/这个目录下),

但是友善之臂按照下列方式解压,不会解压到/usr/local/arm/目录下的,这是因为友善之臂把/usr/local/arm/目录修改成了

/opt/FriendlyARM/toolschain/,除非自己在把它修改过来

[root@localhost ~]# tar -ivxzf /smbroot/arm-linux-gcc-4.4.3.tar.gz -C /

4、修改配置文件,将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。

打开设置文件

[root@localhost opt]# vi /etc/profile

在打开的文件的

# Path manipulation

if [ "$EUID" = "0" ]then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

pathmunge /usr/local/arm/4.4.3/bin

fi

或者在文件末尾添加

export PATH=$PATH:/usr/local/arm/4.4.3/bin

保存退出

5、立即使新的环境变量生效,不用重启电脑

[root@localhost opt]# source /etc/profile

[root@localhost opt]#

6,检查是否将路径加入到PATH:

[root@localhost opt]# echo $PATH

显示的内容中有/usr/local/arm/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

7、测试是否安装成功

首先,执行find命令查询一下arm-linux-gcc的位置

[root@localhost ~]# find / -name arm-linux-gcc

/opt/arm/toolschain/4.4.3/bin/arm-linux-gcc

[root@localhost ~]#

可以看到arm-linux-gcc的位置与环境变量中设定的路径一致

接下来查询arm-linux-gcc的版本

[root@localhost bin]# arm-linux-gcc -v

Using built-in specs.

Target: arm-none-linux-gnueabi

Configured

with:

/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure

--build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu

--target=arm-none-linux-gnueabi

--prefix=/opt/FriendlyARM/toolschain/4.4.3

--with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root

--enable-languages=c,c++ --disable-multilib --with-arch=armv4t

--with-cpu=arm920t --with-tune=arm920t --with-float=soft

--with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions

--enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3

--with-mpfr=/opt/FriendlyARM/toolschain/4.4.3

--with-ppl=/opt/FriendlyARM/toolschain/4.4.3

--with-cloog=/opt/FriendlyARM/toolschain/4.4.3

--with-mpc=/opt/FriendlyARM/toolschain/4.4.3

--with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root

--disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99

--enable-long-long --enable-target-optspace

Thread model: posix

gcc version 4.4.3 (ctng-1.6.1)

[root@localhost bin]#

可以看到arm-linux-gcc的版本号,至此,arm-linu-gcc已成功安装。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7289697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存