Ubuntu 12.04 64bit GCC交叉编译器制作 原创
下面以适合嵌入式开发最经常使用的ARM平台的ARMGCC交叉编译器为例进行解说:其它平台步骤和方法一样。仅仅需在平台选择的时候作对应更改就可以。 准备工作:
wget http://www.kegel.com/crosstool/crosstool-0.43.tar.gz
2.下载编译过程须要用到的源码:
binutils-2.15.tar.bz2
gcc-3.4.5.tar.bz2
glibc-2.3.6.tar.bz2
glibc-linuxthreads-2.3.6.tar.bz2
linux-2.6.8.tar.bz2
sudo apt-get install bison flex build-essential patch libncurses5-dev
详细工作步骤:
1、改动系统配置
Ubuntu 12.04 64bit 默认安装的 gcc 版本号为4.6,这个版本号对于语法要求较高。编译会出错,眼下不宜选用,于是选择了gcc-4.1,但并不须要卸载gcc-4.6。
sudo apt-get install gcc-4.1 (眼下新的都无法直接安装。须要自己下载gcc-4.1 手动安装,请參见Ubuntu 12.04 64bit 下安装编译GCC 4.1.2 绝对原创)
sudo rm /usr/bin/gcc (删除GCC。它仅仅是个到gcc-4.6的软链接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)
1.2 改动sh版本号
sudo dpkg-reconfigure dash
选择 no 以删除 dash 此处假设不改好的话,编译时会出现错误
2.解压软件包。并进入该文件夹。查看重要的脚本文件。
假如选用demo-arm- softfloat.sh 就是建立目标为支持软浮点的arm交叉编译工具链。
RESULT_TOP=/opt/crosstools //表示生成的工具链的存放文件夹
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.8
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
5 $ ./ demo-arm-softfloat.sh 这个过程较长(半个小时左右)
6. 改动环境变量
直接改动/home/linux/.bashrc cd /home/linux
vim .bashrc 在最后面加入例如以下内容:
PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin
然后 source .bashrc
7.运行例如以下命令
$ arm-softfloat-linux-gnu-gcc -v
显示
Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs
Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu
--with-float=soft --with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu
--disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
hread model: posix gcc version 3.4.5
ok交叉编译环境创建成功。
8.恢复我们改动的系统配置:
恢复gcc为4.6
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc
又一次安装dash
sudo dpkg-reconfigure dash
选择 yes 以又一次安装 dash
注意:
1.UBUNTU12.04 上工具链的编译运行./demo-arm-softflaot.sh过程中会出现以下的错误:编译过程中会出现:
*** "These critical programs are missing or too old" as ld
解决方法例如以下:
改动以下的文件:
vi ./build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/glibc-2.3.6/configure (就是把4425行的{ (exit 1); exit 1; };屏蔽掉,由于binuilts版本号过低会造成异常退出)
将
4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
4420 *** These critical programs are missing or too old:$critic_missing
4421 *** Check the INSTALL file for required versions." >&5
4422 echo "$as_me: error:
i
4423 *** These critical programs are missing or too old:$critic_missing
4424 *** Check the INSTALL file for required versions." >&2;}
{ (exit 1); exit 1; };}
改为:
4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
4420 *** These critical programs are missing or too old:$critic_missing
4421 *** Check the INSTALL file for required versions." >&5
4422 echo "$as_me: error:
4423 *** These critical programs are missing or too old:$critic_missing
4424 *** Check the INSTALL file for required versions." >&2;}
#{ (exit 1); exit 1; };
}
在再次运行./demo-arm-softfloat.sh前,请在eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest 末尾处加--nounpack表示不又一次解压安装包,目的是让安装过程继续进行,而不覆盖掉该configure问题以及曾经的编译结果
再次运行:
./demo-arm-softfloat.sh
Ubuntu 12.04 64bit GCC交叉编译器制作 原创的更多相关文章
- Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面
Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面.上网问了问百 ...
- Ubuntu 18.04安装arm-linux-gcc交叉编译器
Ubuntu 18.04安装arm-linux-gcc交叉编译器
- build linaro 4.8 on ubuntu 12.04 64bit
安装必要的软件 sudo apt-get build-dep gcc binutils gdb sudo apt-get install curl gawk sudo apt-get install ...
- ubuntu 10.04 安装arm交叉编译器
家里有一台cotext-A9(armv7-a) 的盒子,现在不用了, 一直想着废物利用.于是想怎么为这盒子编译程序. 目标机器: root@routon-h1:/# uname -a Linux ro ...
- Ubuntu 18.04安装arm-linux-gcc交叉编译器(超简单,附安装包下载地址)
目前网上搜索发现,最多人安装的是4.4.3版本的: arm-linux-gcc-4.4.3.tar.gz下载地址:https://pan.baidu.com/s/1rAIBASIRZAXl-P1UOW ...
- Ubuntu 12.04 64bit 安装编译GCC 4.1.2 绝对原创
1. 下载并解压源代码: wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 tar jxvf gcc-4.1.2. ...
- 在Ubuntu 12.04 - 64bit中安装CodeSourcery时提示错误
安装时提示错误,Your 64-bit Linux host is missing the 32-bit libraries requied to install and use Sourcery C ...
- cpu-z for ubuntu 12.04 64bit : cpu-g
wget https://launchpad.net/~phantomas/+archive/ppa/+files/cpu-g_0.9.0_amd64.deb sudo dpkg -i cpu-g*. ...
- ubuntu 12.04 install gcc 4.8
http://askubuntu.com/questions/271388/how-to-install-gcc-4-8-in-ubuntu-12-04-from-the-terminal sudo ...
随机推荐
- 【Django】安装及配置
目录 MVC框架与MTV框架 Django的MTV模式 Django框架图示 安装及配置 创建一个Django项目 目录介绍 运行Django项目 启动Django报错 模版文件配置 静态文件配置 A ...
- chown---改变某个文件或目录的所有者和所属的组
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.用户可以是用户或者是用户D,用户组可以是组名或组id.文件名可以使由空格 ...
- js 图片轮转
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- openstack-dashboard开发环境搭建
1,在开发过程中,一般都要,将dashboard这个组件单独执行在自己的本地的linux系统中(Ubuntu或centos),那个比較顺手用哪个.假设不习惯,能够用vmwareworkstation安 ...
- IOS学习之斯坦福大学IOS开发课程笔记(第六课)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...
- Handle-postDelayed 延迟操作
今天在工作的时候,遇到了一个方法,是关于Handle来实现延时操作的,自己写了一个小demo,学习总结如下 xml <?xml version="1.0" encoding= ...
- .Net中常用的几种ActionResult
1.ViewResult 表示一个视图结果,它根据视图模板产生应答内容.对应得Controller方法为View. 2.PartialViewResult 表示一个部分视图结果,与ViewResult ...
- js的style和getArribute("属性名")
getAttribute()是HTML DOM的一个方法,用以获取HTML元素的属性(如id,name,type以及其他自定义属性). style是HTML DOM的一个关于样式的对象,style对象 ...
- 洛谷P2251 质量检测
题目背景 无 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, A2, ... Am} ...
- Oracle primary key&foreign key
--主键 alter table tablename1 add constraint pk_tablename1 primary key(column1);--增加数据表1的主键column1,如果是 ...