正确的传送门
去 官网 下载,不要去国内某些博客的网盘里下载,他们给出的环境也许并不适合你。
官网 https://releases.linaro.org/components/toolchain/binaries 的下载截图如下:

选择所需版本,我们这里选择 latest-7

这里有若干版本,需要根据你的宿主机和目标机的位数,以及目标机器的大小端来选择。
aarch64代表目标机是64位的,其他的则都为32位的
_be代表是大端模式,不带该字段的为小端模式
查看机器位数
比如我的宿主机:
root@ubuntu:~/tools# uname -a
Linux ubuntu 4.4.0-131-generic #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
上面的 x86_64 代表的是64位机型
再比如我的目标机:
root@Orangepi:~# uname -a
Linux Orangepi 3.10.102+ #6 SMP PREEMPT Mon Apr 23 19:09:26 CST 2018 aarch64 aarch64 aarch64 GNU/Linux
上述aarch64 也是代表的是64位机型
两者是不同的架构,一个是intel的,一个是arm的。
查看机器大小端
目前没有找到合适的系统自带命令查看,需要编写程序。
/* ex8-1.c */
#include <sys/utsname.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
union
{
short inum;
char c[sizeof(short)];
} un;
struct utsname uts;
un.inum=0x0102;
if(uname(&uts)<0)
{
printf("Could not get host information .\n");
return -1;
}
printf("%s -%s-%s:\n",uts.machine, uts.sysname, uts.release);
if(sizeof(short)!=2)
{
printf("sizeof short =%d\n", sizeof(short));
return 0;
}
if(un.c[0]==1 && un.c[1]==2)
printf("big_endian.\n");
else if(un.c[0]==2 && un.c[1]==1)
printf("little_endian.\n");
else
printf("unknown .\n");
return 0;
}
上述代码通过
gcc test.c
./a.out
编译并执行,我的目标机显示的内容为:

因此我选择 aarch64-linux-gnu ,并在跳转后的页面 https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/ 中选择了 gcc-linaro-7.3.1-2018.05-x86_64_aarch64_be-linux-gnu.tar.xz

x86_64 代表宿主机是64位的,其他的则都为32位的
_be代表是大端模式,不带该字段的为小端模式
100多M,没有搭梯子,300多k的速度稍有点慢,建议用迅雷等断点续传工具,chrome经常下载中断且无法继续。
网友评论