从头编译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也不行
之前看别人的文章有成功过 不知是哪出了问题
最新文章
- iOS 让按钮上的标题换行显示
- 2015-01-19 .Net 软件工程师 笔试题
- JS-鼠标经过显示二级菜单
- Javascript软键盘设计
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
- 在CentOS下安装WebBench进行web 性能测试
- openstack【Kilo】汇总:包括20英文文档、各个组件新增功能及Kilo版部署
- C# 实现HTML5服务器推送事件
- VS2010/MFC编程入门之十四(对话框:向导对话框的创建及显示)
- 发现一个Doxygen风格的QT帮助
- 正式生产环境下hadoop集群的DNS+NFS+ssh免password登陆配置
- hadoop在实现kmeans算法——一个mapreduce实施
- ubuntu---网络管理
- mac连接windows远程桌面及文件复制
- Java开发笔记(四十)日期与字符串的互相转换
- Python基础之数组和向量化计算总结
- Perl面向对象(3):解构——对象销毁
- PMS-授权中心
- torchvision.datasets.ImageFolder数据加载
- Android: protecting the kernel
热门文章
- Entity Framework Batch Update
- 20151226--easyUI
- Python核心编程读笔 1
- Algorithms 4th - 1.1 Basic Programming Model - EXERCISES
- sersync+inotify实时备份数据
- java中JSON串转换并获取数据
- requirejs + vue 项目搭建
- redis的内部实现机制
- HTML5学习笔记之客户端存储数据方法:localStorage(),sessionStorage()
- 如何在C++中获得完整的类型名称(RTTI的typeid在不同平台下有不同的输出值表达,自建类改进了RTTI丢失的信息)