700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 搭建ARM交叉编译环境

搭建ARM交叉编译环境

时间:2019-08-30 08:33:54

相关推荐

搭建ARM交叉编译环境

搭建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,我的是不需要,因为以前都安好了。。。。

至此所有工作均已大功告成!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。