Codeblocks:Release 8.02、宿主机:ubuntu10.04、开发板:嵌入式linux操作系统。

Codeblocks配置交叉编译环境

如下图所示,由上到下的选择,1处直接选择即可。2处是你交叉编译器安装位置,3 4 5 6 可以在你交叉编译器安装位置下的bin目录找到。

注:2处的Compiler's installation directory 目录一定要设置正确,一定是交叉编译工具链 bin 目录的上一级目录,比如我的是 /usr/local/arm/arm-linux-4.4.3/bin/ 目录的上一级,即为 /usr/local/arm/arm-linux-4.4.3。

注:arm-linux-gdb和gdbserver默认是不安装的,需要我们自己安装。arm-linux-gdb安装目录最好也选择为交叉编译器安装目录,即/usr/local/arm/arm-linux-4.4.3。

image


2 arm-linux-gdb和gdbserver安装方法

注:如上所述,arm-linux-gdb的安装路径建议是/usr/local/arm/arm-linux-4.4.3。

2.1 arm-linux-gdb的编译安装 

下载gdb-6.8.tar.bz2至工作目录,gdb源码下载: http://ftp.gnu.org/gnu/gdb/

命令如下:

$tar -jxvf gdb-6.8.tar.bz2 
$cd gdb-6.8 
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/arm-linux-4.4.3

--prefix用于指定安装路径

$make 
$sudo make install 
完成后可以在/usr/local/arm/arm-linux-4.4.3/bin下找到arm-linux-gdb文件 

2.2 arm-linux-gdbserver的编译安装 

进入/gdb/gdbserver,命令如下:

$cd gdb/gdbserver./configure --target=arm-linux --host=arm-linux 
$make CC=arm-linux-gcc 
(CC=arm-linux-gcc用于指定arm-linux编译器) 
编译成功后在当前目录下会生成gdbserver文件,拷贝至开发板上(可放入开发板/usr/bin/目录,这样在任何目录均可执行gdbserver命令)。

3 配置nfs共享文件目录

3.1 安装NFS软件包

Ubuntu 上默认是没有安装 Ubuntu nfs 服务器的,因此我们首先安装 Ubuntu nfs 服务器端: 
$sudo apt-get install nfs-kernel-server 

3.2 添加NFS共享文件目录 

安装完NFS服务器等相关软件后,需要指定用于共享的NFS目录,其方法为在/etc/exports文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。

$sudo vi /etc/exports 

在最后加入一行: /home/wcl/nfs_root/ *(rw,sync,no_root_squash)   

注: /rootfs 是要共享的目录(必须保证真实存在,否则启动nfs服务时会提示找不到该目录), *代表允许所有的网段IP均可访问, rw 是可读写权限,sync 是数据同步写入内存和硬盘,no_root_squash 是 Ubuntu nfs 客户端分享目录使用者的权限,如果客户端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限。 

修改挂载点的属性:

$chmod 777 /home/wcl/nfs_root/ 

启动 nfs 服务:

$sudo /etc/init.d/nfs-kernel-server  start

在 nfs 服务已经启动的情况下,如果修改了 /etc/exports 文件,需要重启 nfs 服务,以刷新 nfs 的共享目录 :

$sudo /etc/init.d/nfs-kernel-server restart 

3.3 本机测试NFS服务

将已经设定好的 nfs 共享目录 mount 到另一个目录下,测试看能否成功,比如:
$sudo mount -t nfs –o nolock 192.168.0.101:/ home/wcl/nfs_root/  /mnt/nfs/ 

进入到 /mnt/nfs 目录下查看内容是否是挂载的 /home/wcl/nfs_root/ 目录下的内容:

$cd /mnt/nfs/

$ls -l
注:如果出现 nfs mount device or resource busy ,这可能是因为多次挂载的原因,因此要先umount /mnt/nfs 一下 ,如果还是挂载不成功需要重系统来试试。 

4 修改Codeblock工程的调试属性

这里通过网络来实现gdb的远程调试,所以需要将宿主机的一个目录挂载到开发板上,这里直接通过 nfs 服务挂载即可。选择什么目录随意,建议挂载工程所在目录到ARM需要的位置,比如将宿主机(地址192.168.0.101)的/home/wcl/nfs_root/目录挂载到ARM板的/mnt/nfs/,则在ARM上执行 

  $mount -t nfs -o nolock 192.168.0.101:/home/wcl/nfs_root/  /mnt/nfs/ 

修改Codeblock项目的工程属性,在项目名称上点击右键,选择属性:

image

image

修改debug的ip地址和端口,端口任意(与ARM板上的gdbserver监听端口一致即可),ip地址是ARM板的ip地址,这是为了连接开发板的gdbserver而设置的。

5 调试示例

进入 nfs 挂载的共享目录下,运行 gdbserver 服务:

$gdbserver 192.168.0.101:1111 ./bin/debug/TestGdb

这里ip地址是宿主机的,端口自定,但是要和codeblock设置的一致。./bin/debug/TestGdb 为Codeblock生成的ARM二进制可调试文件。

然后再在宿主机中开始调试,如下图所示:

image

image

Logo

更多推荐