搭建ARM交叉编译环境
文章目录
搭建ARM交叉编译环境前言一、安装arm交叉编译工具二、运行可执行程序[坑点]三、调试程序前言
通过前一篇关于risc_v交叉编译环境的搭建,想必大家已经对这些环境的搭建流程有了一个大体的了解。本篇文章借着余热再为大家介绍一下如何在linux上搭建arm的交叉编译环境。
说明:本来我是打算基于eclipse在window上搭建的,但我最后发现jlink那些东西没有开发板没法调试,qemu我又不知道怎么用,网上全部教程好像都要用到开发板,因此最后还是重新回到linux上来搞。如果有大佬知道windows上的那个eclipse怎么弄,请加我VX:sdusqtx,欢迎指教!!!
一、安装arm交叉编译工具
第一步:
首先跟以前一样,安装arm交叉编译工具,去这个网址/download.asp或者/p/princess-alist/downloads/detail?name=arm-linux-gcc-4.3.2.tgz&can=2&q下一个arm-linux-gcc-4.4.3.tgz,然后在/usr/local(绝对地址)下新建一个文件夹arm_4.4.3,将该压缩包搞到那个文件夹下解压。具体代码指令如下:
cd /usr/localsudo mkdir arm_4.4.3mv arm-linux-gcc-4.4.3.tgz /usr/local/arm_4.4.3tar -xzf arm-linux-gcc-4.4.3.tgz
第二步:
现在交叉编译的工具都在/usr/local/arm_4.4.3/bin目录下面了,然后你需要配置一下环境变量,以便你能够在任何路径下执行arm-linux-gcc或者其他命令:
sudo gedit ~/.bashrc#在底部添加如下代码:export PATH=$PATH:/usr/local/arm_4.4.3/bin
之后我们来验证一下,首先可以看到/usr/local/arm_4.4.3/bin目录下面已经有我们的arm toolchain了,那我们再任意打开一个命令行,输入"arm-"再按两次tab键,就可以看到arm toolchain的所有工具列表,截图如下:
第三步
我们写一个程序测试一下,程序还是老样子见下面:
#include <stdio.h>int main(void){printf("hello arm!\n");}
至此,编译工作就大体完成了。。。
二、运行可执行程序[坑点]
第一步
一切顺利的话,现在可以开始运行了,但是我发现我用./hello报错,因为我们现在是在arm环境下,./hello是运行在linux环境下的,因此我想到了我之前安装过的qemu,这里大家没有安装好的可以去参考我那篇risc_v的文章,链接在这里:/qq_40836704/article/details/120391584,安好之后也像之前一样,随便打开一个命令行输入"qemu"后连续敲两次tab键,截图如下:
第二步
之后输入qemu-arm hello会报错,错误如下:
/lib/ld-linux.so.3: No such file or directory
可以看到,提示在/lib文件夹下缺少ld-linux.so.3这个文件,由于这里运行的是arm程序,因此可以考虑去交叉编译所在目录中寻找该文件,最终在路径/usr/local/arm_4.4.3/arm-none-linux-gnueabi/lib文件夹中找到该文件,这是一个指向ld-2.9.so的链接文件,因此我们将该文件拷贝到lib文件夹下面:
sudo cp ld-linux.so.3 /lib
然后再次尝试qemu-arm hello 还是报错:
这里无法打开libc.so.6这个文件,因此我们需要创建/usr/local/arm_4.4.3/arm-none-linux-gnueabi/lib/libc-2.9.so文件的指向,此时我们再去qemu-arm hello或者./hello发现都能执行了,帅!
第三步
之前我第一次没有解决qemu-arm的bug,因此我参考了/luk6xff/9f8d2520530a823944355e59343eadc1这个网址,安装了arm-linux-gnueabihf-gcc,你们也可以按照以下过程来编译运行,一样可以:
sudo apt-get install gcc-arm-linux-gnueabihf libc6-dev-armhf-cross qemu-user-staticarm-linux-gnueabihf-gcc -static -o hello hello.cfile hellohello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, BuildID[sha1]=3b6e02f6ad2d35e4f501c68010c2069aaa5142af, for GNU/Linux 3.2.0, not stripped./hellohello arm!
至此,运行也完成了,下面一章节讲调试
三、调试程序
第一步
第一种方式直接见下图:
第二步
第二种方式也是废话不多说,直接上图:
注意:这里可能有些人需要安装arm-linux-gdb,那就去参考这个吧:/qq_41248872/article/details/83987670,我的是不需要,因为以前都安好了。。。。
至此所有工作均已大功告成!!!