,-->,采用的是nfs方针板挂载本机目次的方法,虽然起首,你得守旧本机的nfs共享效力,详细步骤如下:, ,1、进入/etc目次,vimexports这个文件,在外面



 



采用的是nfs方针板挂载本机目次的方法,虽然起首,你得守旧本机的nfs共享效力,详细步骤如下:

 

1、进入/etc目次,vim exports这个文件,在外面添加/home 192.168.0.*(rw,sync)留存后到场

 

注:/home 为要共享的文件夹的称号,192.168.0.*为本NFS效力器许可造访的客户端ip,若nfs不乐成,不和参数rw ro 等标记对文件夹操纵权限,sync:数据同步写入内存和硬盘,也可以利用async,此时数据会先暂存于内存中,而不当即写入硬盘。可以将括号外面的sync去丢失。

 

2、从新启动nfs效力,下令为:/sbin/service nfs restart

 

3、输入下令route del default来封锁网关(加速mount速度)

 

4、mount 192.168.0.47(为本机的ip):/home /mnt用以测试本机能否守旧nfs效力。

 

cd /mnt目次下,看mnt下的内容能否与home的内容齐整,若齐整,标明已经守旧nfs效力。

 

当本机的nfs效力守旧后,你还需求设置开发板的ip所在,因为各个开发板ip所在设置方法纷歧样,所以,假定开发板的ip所在为192.168.2.100.

 

搭建交叉编译情况的步骤:

 

1、平常在安顿linux时候,自动安顿c编译情况,是以不需求再从新安顿gcc编译器。

 

2、安顿交叉编译器

 

从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载交叉编译器cross-3.2.tar.bz2, 寄放在/usr/local目次下。

 

切换致该目次:

# cd /usr/local

# mkdir arm

 

然后解压cross-3.2.tar.bz2:

# tar jxvf cross-3.2.tar.bz2 –C /usr/local/arm

 

解压后把/usr/local/arm/usr/local/arm中最初一个arm拷贝到/usr/local,也就是用下令cd /usr/local/arm/usr/local中,用cp -a arm /usr/local把arm拷贝到/usr/local中去。

 

3、把交叉编译器的途径到场到PATH。(两种方法a,b)

 

a、# export PATH=$PATH:/usr/local/arm/bin

 

注:(这只能在从此的终端下才是有效的,)

 

b、编削/etc/profile 文件:

# vim /etc/profile

 

增退途径设置,在末尾添加如下:

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

 

4、使新的情况变量失效。

# source /etc/profile

 

5、反省能否将途径到场PATH的方法。

# echo $PATH

 

假若表现的内容中有/usr/local/arm/bin,分析已经将交叉编译器的途径到场PATH。自此,交叉编译情况安顿完成。

 

6、测试。

 

上面我们就来测试一个简略的例子。

 

/*Hello.c*/

#include

int main()

{

printf(“hello word!\n”);

return 0;

}

 

递次输好从此确认无误,留存。进入递次文件所在目次

# arm-linux-gcc hello.c –o hello

 

(-o 可以体味为“方针为天生”)arm-linux-gcc是第一次呈现,有人大年夜概会问这个哪里来的,无妨事翻开刚才安顿的交叉编译工具目次/usr/local/arm-linux/arm-linux/bin/可以缔造外面有一个arm-linux-gcc文件,这个就是针对arm的CPU的gcc编译器了。从此用别的编译工具链式也可以经过历程这种方法看看其编译器是什么了。编译好了从此就可以下载到方针机阻止测试了。虽然也可以先在PC机上测试正误。用gcc hello.c –o hello就可以天生PC机上递次了,在运转./hello 就可以缔造终端表现hello!字样。用arm-linux-gcc编译的递次在PC机上是不克不及运转的,运转后给腐蚀误报告:无法执行二进制文件。分析经过交叉编译情况编译出的文件是硬件可执行的二进制代码文件.

 

7、交叉编译情况搭建乐成。

 

要经行gdbserver长途调试,还必需安顿gdb长途调试工具:

 

gdb的源代码包可以从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,最新版本为gdb-6.4。下载到某个目次,笔者下载到本人的用户目次:/home/vicky。

 

下载完后,进入/home/vicky目次,设置编译步骤如下:

#tar jxvf gdb-6.4-tar-bz2

#cd gdb-6.4

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v

#make

(这一步的时候大年夜概会有成果,提示一个函数中(详细函数名不记得了)parse error,就是unsigned前边多了一个”}”,你用vi进入那一行把它删丢失就行了。平常都不会腐蚀的。)

#make install

#export PATH=$PATH:/usr/local/arm-gdb

 

进入gdbserver目次:

#./configure --target=arm-linux –host=arm-linux

#make CC=/usr/local/arm/bin/arm-linux-gcc

(这一步要指定arm-linux-gcc的职位地方,大年夜概跟你的纷歧样)

 

没有错误的话就在gdbserver目次下天生gdbserver可执行文件,把它烧写到flash的根文件系统分区,或经过历程nfs mount的方法都可以。只需包管gdbserver能在开发板上运转就行。

 

上面就可以用gdb gdbserver调试我们开发板上的递次了。在方针板上运转gdbserver,实在就是在宿主机的minicom下,我的red hat linux装在vmware下的。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(这里参数-o nolock可以不加,不加这一步执行得反而更快些),hello和gdbserver都是位于linux根目次下,把主机根目次挂在到开发板的/tmp 目次下。

 

要阻止gdb调试,起首要在方针系统上启动gdbserver效力。在gdbserver所在目次下输入下令:

 

(minicom下)

#cd /tmp

#./gdbserver 192.168.2.100:2345 hello

192.168.2.100为宿主机IP,在方针系统的2345端口开启了一个调试历程,hello为要调试的递次。

 

呈现提示:

Process /tmp/hello created: pid="80"

Listening on port 2345

(另一个终端下)

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb hello

(gdb) target remote 192.168.2.223:2345

(192.168.2.223为开发板IP)

呈现提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

 

同时在minicom下提示:

Remote debugging from host 192.168.2.100

(gdb)

 

连接乐成,这时候就可以输入种种gdb下令如list、run、next、step、break等阻止递次调试了。

 

注:在长途调试的这些步骤中nfs设置和安顿交叉编译工具,以及安顿gdb工具的没有什么递次,只是主见再gdbserver长途连接前要设置好开发板的ip所在。


 作者:korn





版权声明: 原创作品,许可转载,转载时请务必以超链接情势标明文章 原始来因 、作者信息和本声明。不然将清查法律责任。