redhat enterprise 6.1 平台制作 arm-none-linux-gnueabi交叉编译工具莲
来源:互联网 发布:java测试面试题及答案 编辑:程序博客网 时间:2024/04/27 22:07
本文比较适合读者:初学者
目的:得到arm-none-linux-gnueabi 的编译工具:gcc g++ as ar ld .....
编译平台:redhat enterprise 6.1
需要更新原有软件(gcc ,glibc 依赖的工具),下面是已更新版本:
ppl-0.11.1
cloog-ppl-0.15.11
gmp-5.0.0
mpfr-3.0.0
mpc-1.0
该版本交叉编译工具用到的软件:
binutils-2.21.0
gcc-4.6.1
glibc-2.16.0
glibc-ports-2.16.0
简单的原理:该工具是由其他主机编译的,所以必须依赖安装在其他主机的一些工具和一些没有安装在这类主机到软件工具,然后经过不同到配置得到我们想要到工具。
准备工具的思路:由顶到底,由最上层决定用哪些版本到软件
制作的流程思路:由底往上,把环境基础打好了再编译。
如何确定软件的版本:
glibc 源码目录下面的INSTALL 对软件的版本要求做了说明,对gcc , binutils , make, texinfo awk, perl ,sed 等有版本要求
gcc 源码子目录INSTALL有个prerequisites.html需要用浏览器打开,可以看到对用到到库GMP, MPFR,MPC,PPL,CLOOG-PPL有要求,
glibc-ports这个东西是对支持ARM 平台架构有用,版本号要与glibc一样。
总流程:
编译binutils
安装kernel头文件
编译纯gcc
用纯gcc编译glibc
编译交叉工具
注:初学者应该体验每个过程,而不是把所有工作都放到一个脚本去完成,应该分段完成。
准备工作:
建立工作目录:cross-tool,此目录下建立:
kernel-head
binutils-build
gcc-build
glibc-build
tool-build 交叉工具编译目录
result 安装目录
source 软件源码
script 存放自己编写的脚本
环境变量:
PROJECT_DIR=/home/tgen/cross-tool
HOST=I686-redhat-linux
TARGET=arm-none-linux-gnueabi
PREFIX=${PROJECT_DIR}/result
PREFIX_TARGET=${PREFIX}/${TARGET}
export PATH=${PREFIX_TARGET}/bin:${PREFIX}/bin:$PATH
以上内容保存为脚本secrossenv.sh,在工作目录cross-tool下执行 . setcrossenv.sh
一.【编译binutils】
错误1:
解决:
二. 【安装头文件】
错误1:
解决:
三. 【编译纯gcc】
错误1:
解决:
四. 【编译glibc】
错误1:idn-stub.c:24:27: fatal error: gnu/lib-names.h: No such file or directory
因为安装glibc头文件时,configure后面接了 --disable-shared
在glibc目录下的Makefile有如下注释:
# Create links for shared libraries using the `ldconfig' program if possible.
# Ignore the error if we cannot update /etc/ld.so.cache.
看起来和连接器有关
解决:暂时未找到方法
五. 【编译交叉工具】
错误1:
解决:
错误:
checking for ARM TLS support... no
configure: error: the assembler must support TLS
解决:把编译好的arm-none-linux-gnueabi-gcc所在路径添加到PATH环境变量
--------------------------待续
- redhat enterprise 6.1 平台制作 arm-none-linux-gnueabi交叉编译工具莲
- 交叉编译工具arm-none-linux-gnueabi-gcc安装
- arm-none-linux-gnueabi交叉编译工具链安装
- 交叉编译工具arm-none-linux-gnueabi-gcc安装
- windows平台上用arm-none-linux-gnueabi-g++4.6.3交叉编译websocket++
- 【linux】ubuntu安装交叉编译工具arm-none-linux-gnueabi-gcc
- 单独编译 u-boot 交叉编译工具安装----交叉编译工具arm-none-linux-gnueabi-gcc安装
- 用arm-none-linux-gnueabi交叉编译Linux内核
- Unbutu环境下Cortex-A8 交叉编译工具链arm-none-linux-gnueabi的搭建
- ubuntu 14.04 安装交叉编译工具链arm-none-linux-gnueabi
- ubuntu16.04 64bit安装arm-none-linux-gnueabi交叉编译工具链
- centos 64bit安装arm-none-linux-gnueabi交叉编译工具链
- arm-none-linux-gnueabi交叉工具链安装
- arm-none-linux-gnueabi交叉工具链安装
- arm-none-linux-gnueabi交叉工具链安装
- arm-none-linux-gnueabi交叉工具链安装
- 安装 arm-none-linux-gnueabi交叉工具链
- Ubuntu下用arm-none-linux-gnueabi交叉编译libxml2
- 寒假前刷题(2)kmp系列 hdu1711题
- 程序员最易犯的10类调试错误-
- 对测试的一点思考
- 程序员面试29 调整数组顺序使奇数位于偶数前面
- C语言字符串复制和链接函数
- redhat enterprise 6.1 平台制作 arm-none-linux-gnueabi交叉编译工具莲
- java6调用运行javascript代码
- Xcode创建的默认iOS OpenGL ES 2.0 project代码分析
- [Java]读取文件方法大全
- 数组为空(即未定义的判断方法)
- ubuntu解决eclipse 之“launch failed. Binary file not found.”
- ORA-08103: 对象不再存在
- Ubuntu 12.04 中java swing上乱码问题解决方案
- $(document).ready(function() 总结以及和window.onload的区别