Linux下CodeBlocks远程调试ARM程序环境搭建
1 Codeblocks配置交叉编译环境2 arm-linux-gdb和gdbserver安装方法3 配置nfs共享文件目录4 修改Codeblock工程的调试属性5 调试示例
Codeblocks:Release 8.02、宿主机:ubuntu10.04、开发板:嵌入式linux操作系统。
1 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。
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项目的工程属性,在项目名称上点击右键,选择属性:
修改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二进制可调试文件。
然后再在宿主机中开始调试,如下图所示:
更多推荐
所有评论(0)