2-编译环境的搭建

1---一些常用的工具我不做赘述,下面是慢慢解决我心中的疑惑并搭建好编译环境,感觉也就是交叉编译工具链。

1.arm-2009q3.tar.bz2,arm-none-linux-gnueabi,arm-linux-gcc ?.arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi 这些名字下有什么区别?版本上的差异又有什么区别?

交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]

  • arch – 体系架构,如ARM,MIPS
  • vendor – 工具链提供商
  • os – 目标操作系统
  • eabi – 嵌入式应用二进制接口(Embedded Application Binary Interface

根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如

  • arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌入式系统的C库。
  • arm-none-linux-eabi:用于Linux的,使用Glibc

1、arm-none-eabi-gcc

ARM architectureno vendornot target an operating systemcomplies with the ARM EABI
用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。

2、arm-none-linux-gnueabi-gcc

(ARM architectureno vendorcreates binaries that run on the Linux operating systemand uses the GNU EABI)

主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。arm-none-linux-gnueabi基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。arm-none-linux-gnueabi-xxx 交叉编译工具的浮点运算非常优秀。一般ARM9、ARM11、Cortex-A 内核,带有 Linux 操作系统的会用到。

我的开发板是itop4412,在官方提供的资料中使用 “arm 交叉编译器”文件夹中的压缩包“arm-2009q3.tar.bz2” 这么一个交叉编译工具,我把他解压打开是一个如下图:arm-none-linux-gnueabi。所以上诉疑问有了不少的解答。。。。。。

arm-none-linux-gnueabi
链接工具命名:
    arch-vendor-(os-)abi

1、arm-none-linux-gnueabi (ARM architecture, no vendor, linux OS, and the gnueabi ABI)
        用于编译ARM架构的u-boot、linux内核、linux应用等
2、arm-none-eabi 
        用于编译ARM架构的裸机系统(包括linux的 boot、kernel)
3、arm-eabi 
        Android ARM 编译器

3、arm-eabi-gcc

Android ARM 编译器。

4、armcc

ARM 公司推出的编译工具,功能和 arm-none-eabi 类似,可以编译裸机程序(u-boot、kernel),但是不能编译 Linux 应用程序。armcc一般和ARM开发工具一起,Keil MDK、ADS、RVDS和DS-5中的编译器都是armcc,所以 armcc 编译器都是收费的(爱国版除外,呵呵~~)。

5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gcc

arm-none-uclinuxeabi 用于uCLinux,使用Glibc。

arm-none-symbianelf 用于symbian,没用过,不知道C库是什么 。

以上基本所有内容来源于网上博客等内容,我只是截取了我比较关心的一些内容,附上一些原文链接,感谢https://blog.csdn.net/dldw8816/article/details/46004167

所以,针对我的板子和我的想法,我决定选用

arm-none-linux-gnueabi-gcc(可以上上面连接中下载,对此再次感谢),ubuntu16.04 x64

2---另外,我为了区分好我的各个工作环境,因为我还在编写nodejs的程序,我怕出问题2333 菜鸡脆弱的内心。我决定另外建一个用户。

建议使用命令sudo adduser username 会让你输入用户密码该命令会为你在home目录下创建用户目录

fullname可以填一下,其他的无所谓吧。

新建之后发现无法使用sudo,网上有办法,修改、etc/sudoer文件?或者添加用户到sudo adm用户组,先不管为什么,可使用sudo命令

3---做到这里发现要将上面的编译工具拷贝到ubuntu中,可以使用虚拟机工具vmtool直接粘贴,也可以使用winscp,也可以使用samba,哈哈我都用过。。。神经病。samba是把文件夹映射到windows中使用,winscp是类似图形化文件管理器可以远程拷贝操作那种,只要权限够,我先用winscp拷贝一下子,以后有需要还是用samba


阅读更多

没有更多推荐了,返回首页