Linux下ARM程序的编译运行及调试

标签:
it |
一、交叉编译环境的安装
1. 首先下载linux平台下的arm toolchain
这里使用从googlecode下载的4.3.2版本的toolchain,地址如下:
http://code.google.com/p/princess-alist/downloads/detail?name=arm-linux-gcc-4.3.2.tgz&can=2&q=
2. 安装该toolchain
首先激昂下载的arm-linux-gcc-4.3.2.tgz任意解压到一个位置。解压后得到的低一级文件夹名为usr,接着第二级和第三级文件夹分别为local和arm,这里我们需要将整个arm文件夹拷贝到路径/usr/local(绝对地址)下。指令如下:http://s11/mw690/a5ba8b0ftd337202bb2aa&690
3. 修改环境变量
http://s10/mw690/a5ba8b0ftd337249e09b9&690
http://s11/mw690/a5ba8b0ftd33724d2b80a&690
在/etc/profile文件的最下一行加入export所示的那句指令并保存。这里需要重新启动系统或者注销系统后再登陆才可生效。生效后我们使用echo $PATH指令可以看到环境变量中已经将之前的路径添加进去:
http://s9/mw690/a5ba8b0ftd33730938208&690
而且当我们在终端中输入“arm-”后连按两次tab键,可以看到arm toolchain中的所有工具的列表:http://s4/mw690/a5ba8b0ftd33730eb7463&690
4. 编译Hello World程序,测试交叉工具链
写下下面的Hello World程序,保存为 hello.c
#include int main() { printf("Hello World!/n"); return 0; } |
现在利用arm工具集中的arm-linux-gcc对其进行编译http://s13/mw690/a5ba8b0ftd337313788bc&690
二、qemu的安装
安装完成之后,在终端中输入“qemu”后连续点按两次tab键,可以看到qemu所有的工具集:http://s11/mw690/a5ba8b0ftd33731d4893a&690
可以看到,提示在/lib文件夹下缺少ld-linux.so.3这个文件,由于这里运行的是arm程序,因此可以考虑去交叉编译所在目录中寻找该文件,最终,在路径/usr/local/arm/4.3.2/arm-none-gnueabi/libc/lib文件夹中找到该文件,这个一个指向ld-2.8.so链接文件。因此,我们将该文件拷贝到lib文件夹下面:http://s10/mw690/a5ba8b0ftd3373221e159&690
/libc/lib路径下的libc-2.8.so文件,因此我们将/lib路径下的libc.so.6删除,并重新创建指向/usr/local/arm/4.3.2/arm-none-gnueabi/libc/lib/libc-2.8.so文件的libc.so.6文件:http://s16/mw690/a5ba8b0ftd337328ccedf&690
三、arm程序的调试
这里利用gdb对qemu-arm运行的程序进行远程gdb调试,首先是在终端中输入如下指令等待调试:http://s8/mw690/a5ba8b0ftd33732b51b67&690