从头编译ARM交叉编译环境

首先Cygwin需安装基本的命令 例如make binutils gcc 还有diffutils 没有他会报找不到cmp命令 这些都可以在setup.exe中找到

 

编译gcc时,需要注意一个原则:不要再gcc的源码中直接执行./configure、make、make install等命令,需要在源码目录下另外新建一个目录,在新建的目录中执行以上命令。

why?请看:http://gcc.gnu.org/install/build.html,为了防止该网址失效,我摘录重要部分如下:

If you encounter seemingly strange errors when trying to build the compiler in a directory other than the source directory, it could be because you have previously configured the compiler in the source directory. Make sure you have done all the necessary preparations.

  不要小看这个提示,好多错误都出自这里。好,问题有了,解决办法呢?很简单:假如gcc源码在/source目录下,

原文地址:http://blog.csdn.net/qianlong4526888/article/details/8192407

 

prefix指定安装的路径 在执行make install时会安装到指定的目录下

 

gmp,mpfr,mpc是编译gcc用到的库 下载各自的源码解压到gcc目录 然后更名去掉版本号

gcc-5.2.0\

     \gmp\

       \mpfr\

       \mpc\

其他文章说要安装 事实上只要放入gcc目录就行。

 

target 也有要求 并不是生成文件前缀那么简单

交叉编译工具链的命名规则为: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

原文地址:http://www.veryarm.com/296.html

 

编译的流程是 

1.编译binutils

2.编译无依赖的gcc 主要用于编译glibc 仅支持c语言就行 这样编译出来的glibc不会引用系统任何库

3.用上一步的gcc编译glibc

4.编译完整gcc

PS:这几天好像进了一个大坑 尝试用Cygwin搭建交叉编译环境

结果binutils gcc都编译完了 glibc不支持 换了Msys2也不行

之前看别人的文章有成功过 不知是哪出了问题

posted @ 2016-12-15 14:22  kakain  阅读(424)  评论(0编辑  收藏  举报