用crosstool-ng建立arm-linux 4.3.2 交叉工具链

【嵌入式移植】2、使用Crosstool-NG制作交叉编译工具 在/crosstool-ng路径下新建src、crosstool-build、x-tools文件夹,并将/crosstool-ng-1.26.0/samples/aarch64-rpi3-linux-gnu/crosstool.config文件复制到/crosstool-ng路径下,重命名为.config,后续将在/crosstool-ng路径下进行制作,即${CT_TOP_DIR}=~/arm/crosstool-ng。在~/arm/crosstool-ng路径下执行ct-ng build命令。 阅读详情
 
crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
使用crosstool最多只能编译gcc 4.1.1 glibc 2.x的版本.
而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本 glibc 2.9版本...
在使用低于4.1.1的版本编译2.6.29 kernel时,会出现
include/linux/compiler-gcc4.h:7:3: error: #error Your version of gcc miscompiles the __weak directive
include/linux/compiler-gcc4.h:7 :如下
/* GCC 4.1.[01] miscompiles __weak */
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
# error Your version of gcc miscompiles the __weak directive
#endif
所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎.

测试环境:
Debian Linux 2.6.18-6-686
Ubuntu Linux 2.6.28-14     (Ubuntu 9.0.4)
1.crosstool-ng的安装
cd /tmp
mkdir crosstool-ng
wget http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.4.1.tar.bz2
tar jxvf crosstool-ng-1.4.1.tar.bz2
cd /tmp/crosstool-ng-1.4.1
./configure --prefix=/opt/crosstool-ng
make
make install
echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc
source ~/.bashrc
ct-ng help
          ## ^ ^ 安装成功
2.安装必要工具包
#安装java开发包
sudo apt-get install gcj
#安装cvs
sudo apt-get install cvs
#切换mawk
sudo apt-get install gawk
cd /usr/bin
sudo mv mawk mawk.bak
sudo ln -s gawk mawk

Ubuntu 9.0.4 请先安装下 termcap 库   参考本文 错误与解决 4.. .
3.crosstool-ng使用范例
   本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程
cd /tmp/crosstool-ng
mkdir build_toolchain
cp /opt/crosstool-ng/lib/ct-ng-1.4.1/samples/arm-unknown-linux-gnueabi/crosstool.config .config
mkdir ~/src
vi .config
修改工具链安装路径
    CT_PREFIX_DIR="/opt/arm/4.3.2/${CT_TARGET}"
ct-ng build.4(用太多线程,很耗系统资源)
4.为工具链增加新链接
  
cd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin
./autoln.sh
autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具...
文件名:autoln.sh 拷到要自动建立链接的文件夹使用。
#!/bin/bash

#
# main
#
if [ $# -lt 1 ] ; then
echo "default path: ./"
BIN_PATH=./
else
BIN_PATH=$1
fi
if [ ! -d $1 ] ; then
echo "path error"
exit
fi
cd $BIN_PATH
SRC=`ls | awk '{print $1}'`

for i in $SRC ; do
if [ "$i" != "autoln.sh" ] ; then
      #echo $i
      TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `
      echo $TARGET
      ln -s $i $TARGET
fi
done
  
错误与解决
1.[ERROR] Missing: 'i486-linux-gnu-gcj' or 'i486-linux-gnu-gcj' or 'gcj' : either needed!
   解决:sudo apt-get install gcj
2.
[ERROR]     Build failed in step 'Retrieving needed toolchain components' tarballs'
[ERROR]     Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 31 in function 'do_libc_get'
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
[ERROR]     Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
[ERROR] (elapsed: 33:29.56)
[33:30] / make[1]: *** [build] 错误 127
make: *** [build.4] 错误 2
解决: sudo apt-get install cvs
3.
[INFO ] Installing C library headers
[EXTRA]     Configuring C library
[EXTRA]     Installing C library headers
[ERROR]     make[3]: *** [/home/star/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi//sys-root/usr/include/gnu/lib-names.h] Error 1
[ERROR]     make[2]: *** [install-headers] Error 2
[ERROR]     Build failed in step 'Installing C library headers'
[ERROR]     Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 185 in function 'do_libc_headers'
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
[ERROR]     Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
[ERROR] (elapsed: 36:41.91)
[36:42] / make[1]: *** [build] 错误 2
make: *** [build.4] 错误 2
解决:查看build.log
[ALL ]     /usr/bin/install: cannot stat `/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc-headers/gnu/li
b-names.h': No such file or directory
但在这之前也发生了一个error,但crosstool-ng并没有报错
[ALL ]     mawk: scripts/gen-sorted.awk: line 19: regular expression compile failed (bad class -- [], [^] or [)
[ALL ]     /[^
[ALL ]     mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
[ALL ]     mawk: scripts/gen-sorted.awk: line 19: runaway regular expression /, "", subd ...
OK,在gen-sorted.awk第19行,出错,这是一个简单的错误,缺少了转义符
查找一个看有没有类似的  
  
   cd /tmp/crosstool-ng/targets/src/glibc-cvs-2.9/scripts 
 sed '//^///p' gen-sorted.awk -n
 输出的则是存在语法错误的语句
 可以直接用
 sed -i 's//^////^/////g' gen-sorted.awk
   这种方法是不完善的,后面的还是会出现错误。
 网上搜了下,需要用/usr/bin/gawk 替换/usr/bin/mawk,即
   sudo apt-get install gawk
   cd /usr/bin
   sudo mv mawk mawk.bak
   sudo ln -s gawk mawk
3.
[INFO ] =================================================================
[INFO ] Installing C library
[EXTRA]     Configuring C library
[WARN ]     Removing "-pipe" for use with glibc>=2.6
[EXTRA]     Building C library
[ERROR]     make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
[ERROR]     make[3]: *** [elf/subdir_lib] Error 2
[ERROR]     make[2]: *** [all] Error 2
[ERROR]     Build failed in step 'Installing C library'
[ERROR]     Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'
[ERROR]           called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
[ERROR]     Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
[ERROR] (elapsed: 32:05.76)
[32:06] / make[1]: *** [build] 错误 2
make: *** [build.4] 错误 2
解决:
   sudo apt-get install gawk
   cd /usr/bin
   sudo mv mawk mawk.bak
   sudo ln -s gawk mawk
4.
49567 [ERROR]    configure: error: no termcap library found
49568 [ERROR]    make[3]: *** [configure-gdb] Error 1
49569 [ALL ]    make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
49570 [ERROR]    make[2]: *** [all] Error 2
49571 [ALL ]    make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
49572 [ERROR]    Build failed in step 'Installing cross-gdb'
49573 [ERROR]    Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
49574 [ERROR]          called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug/300-gdb.sh' at line # 126 in function 'do_debug      _gdb_build'
49575 [ERROR]          called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'
49576 [ERROR]          called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
49577 [ERROR]    Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.
49578 [ERROR] (elapsed: 72:30.97)

解决 :
      这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)
      cd /tmp
      wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
      tar zxvf
termcap-1.3.1.tar.gz
      cd termcap-1.3.1
      ./configure --prefix=/usr
      make
      make install
      (又需要从头编译工具链了 …… )

参考资料
1.crosstool-ng WIKI

 

 原文地址 http://hi.baidu.com/caicry

安装制作交叉编译器的工具crosstool-ng(含解决configure: error: could not find bash >= 3.1的全网最详细方法) 一、安装crosstool-ng的步骤 1.下载(不建议下最新版,因为一旦出现了问题,在全网搜寻不到好的解决办法…) 我尝试了最新版crosstool-ng-1.23.0后的辛酸建议,建议下载crosstool-1.18.0(已经成功安装) .bz2linux下常见的压缩文件格式,7-zip工具可解压得到crosstool-ng-1.18.0.tar,将其拷贝到VMware的ubuntu20.04LTS中(VMware Tools, 我的VMware版本号16.0.0)。我选择的目录:~/CS/ex 阅读详情

相关推荐

编译工具链制作神器 - crosstool-ng

From: Linux hole 深呼吸,深呼吸 - XXXXHello,大家好。 最近一直忙着调试Bug,一直无果。很让人伤心,多模块糅合,Ps. 驱动 用户态 硬件全方位定位,搞的人很累。所以一直没有写点东西; 以前我一直以为要写东西就必须写的高大上的东东,后来才发现,高大上的东东搞起来除了很费力以外,反而可能让人觉得你不也是COPY过来的吗?你不是也是TS过来的吗? 拽什么拽啦。。鉴于此

何文的专栏 2万+

使用crosstool-ng制作交叉编译工具

一、安装crosstool-ng 1、获取crosstool-ng 从官网(http://crosstool-ng.org/)下载crosstool-ng,注意要下载官网打包好的版本,如果直接从github下载源码,源码版本主目录没有configure文件,无法配置和编译。 2、编译crosstool-ng 解压进入crosstool-ng目录,执行./configure,m...

草根工厂——技术虐我千百遍,我依然待你如初恋 1万+

建立arm-linux交叉工具链 crosstool-ng

建立arm-linux交叉工具链 crosstool-ng 测试环境:ubuntu 10.4,10.10,11.4,11.10均无压力。 最近被这个arm-linux交叉编译器搞了5天,都快被崩溃了。终于成功了,好开心,于是再做一遍,没问题,在这里记录以下流程: 1

6023

Crosstool-ng构建stm32mp157交叉编译工具----备份---转载

Crosstool-ng构建交叉编译工具链 交叉编译指在一个平台上生成另一个平台上的可执行代码。常见的有三种: 在Windows PC上,利用集成开发环境(ADS),运行armcc编译器,编译出针对ARM CPU的可执行代码 在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,编译出针对ARM CPU 的可执行代码 在Linux PC上,利用arm-linux-gcc编译器,编译出针对Linux ARM平台的可执行代码 交叉编译工具链是一个由编译器、连接器和解释器组成的综合

weixin_43568960的博客 544

linux 交叉工具链下载,用crosstool-ng建立arm-linux 4.3.2 交叉工具链

crosstool-ng是新的用来建立交叉工具链工具,它是crosstool的替换者.使用crosstool最多只能编译gcc 4.1.1 glibc 2.x的版本.crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本 glibc 2.9版本...在使用低于4.1.1的版本编译2.6.29 kernel时,会出现include/linux/compiler-gcc4...

weixin_33594662的博客 320

新发现

可以用crosstool-ng建立arm-linux 4.3.2 交叉工具链

394

linuxcrosstool-NG(1)生成toolchain

Crosstool-NG 是一款用于建立交叉编译器的开源工具。交叉编译器是一种特殊类型的编译器,可以在一种类型的计算机上(称为“主机”)为另一种类型的计算机(称为“目标”)生成可执行代码。这对于嵌入式系统开发者特别有用,他们需要在功能强大的主机上为资源受限的目标设备(如 ARM 或 MIPS 微控制器)生成代码。自定义构建: Crosstool-NG 允许用户选择他们想要的特定版本的 GCC,glibc 和 binutils,以及其他的库和工具。这意味着你可以根据项目需求创建一个精细调整的工具链。

梅花香自苦寒来,宝剑锋从磨砺出。 3845

crosstool-ng建立arm-linux交叉工具链

crosstool-ng是新的用来建立交叉工具链工具,它是crosstool的替换者.<br />使用crosstool最多只能编译gcc 4.1.1 glibc 2.x的版本.<br />而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本 glibc 2.9版本...在使用低于4.1.1的版本编译2.6.29 kernel时,会出现include/linux/compiler-gcc4.h:7:3: error: #error Your version of gcc mi

babyfans的专栏 2921

在fedora12下用crosstool-ng建立arm-linux交叉编译环境

在fedora12下用crosstool-ng建立arm-linux交叉编译环境    花了几天时间才把基于crosstool-ngarm-linux交叉编译环境建立好,其间过程中一路磕磕碰碰,较为辛苦,最终成功完成,倍感欣慰。趁着记忆余温,及时作个总结记录。<br />    之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链工具,它是crosstool的替换者。crosstoolgcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而cros

babyfans的专栏 2658

Linux开发笔记】crosstool-ng制作交叉编译工具

Linux开发笔记】crosstool-ng制作交叉编译工具

专注Qt与C++开发 3030

使用crosstool-ng制作交叉编译工具

关于crosstool-ng工具源码版本的选择一般选择新版本的,因为在相关工具链制作过程中涉及下载相关的依赖包,相关依赖包可能会存在链接路径变更或者失效的问题,而旧版本的crosstool-ng工具只是依赖当时版本的链接路径来下载资源的,所以存在下载不成功的问题,导致无法编译相关工具链。选择新版本的crosstool-ng工具,则也要选择当前新版本的linux内核,因为新版本的crosstool-ng工具依赖新的内核属性,否则无法安装crosstool-ng工具./ct-ng -v 查看工具版本信息。

ljtjnt的专栏 1415

crosstool-NG:构建定制化编译工具链的强大工具

crosstool-NG:构建定制化编译工具链的强大工具 项目介绍 crosstool-NG 是一款开源的、强大的编译工具链构建系统。它能够帮助开发者快速搭建适用于各种平台的交叉编译工具链,包括嵌入式系统、Linux 内核等。crosstool-NG 的设计理念是通过自动化的构建流程,减少繁琐的手动配置,使得开发者可以更专注于项目本身的开发。 项目技术分析 crosstool-NG 遵循 auto...

gitblog_00109的博客 696

linux centos7 使用 crosstool-ng 构建 交叉编译 工具链 即构建各cpu架构平台的gcc编译器

简介 crosstool-ng,全称是crosstool Next Generation,即下一代crosstoolcrosstool是个交叉编译器的制作工具,但是做的不够好,于是有人(Yann E. MORIN)弄出了个更好的——crosstool-ngcrosstool-ng的特点: 支持menuconfig(类似于Linux内核配置) 支持众多的架构 可选多种不同的C库等模块 ...

whatday的专栏 3825

利用Crosstool-ng制作交叉编译工具

1、什么是crosstool-ng crosstool-ng,全称是crosstool Next Generation,即下一代crosstool,即crosstool的升级版。那么什么是crosstool呢?crosstool,是个交叉编译器的制作工具。交叉编译器简单的说可以理解为在X86电脑上编译处ARM的运行程序。更详细的介绍可以参考《构建嵌入式LINUX系统》的第四章。 2、制作交叉...

weixin_30439067的博客 449

crosstool-ng自制交叉工具链

手动安装termcap #cd /tmp #wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz 到这里termcap-1.3.1.tar.gz 已经下载完成。   #tar zxvf termcap-1.3.1.tar.gz #cd termcap-1.3.1 #sudo  ./configure  prefix=/us

Hens007的专栏 1万+

crosstool-ng构建交叉工具编译链

简介​ crosstool-ng,全称是crosstool Next Generation,即下一代crosstoolcrosstool是个交叉编译器的制作工具,但是做的不够好,于是有人(Yann E. MORIN)弄出了个更好的——crosstool-ngcrosstool-ng的特点:支持menuconfig(类似于Linux内核配置)支持众多的架构可选多种不同的C库等模块提供示例配置支持...

cztqwan的博客 8434
上一篇: grub-0.97源码分析(1)
下一篇: ubuntu bochs 编译安装
刘军卫
博客等级 码龄18年 1140粉丝 245原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值