crosstool-ng制作交叉编译工具链(armv6)

S3C6410交叉编译工具链的制作过程

1) 下载crosstool-ng软件包
crosstool-ng的下载地址是:http://ymorin.is-a-geek.org/download/crosstool-ng/
值得注意的是,下载里最新的crosstool-ng以后,记得在到http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/ 看看有没有相应的补丁,有得话一起下载下来,本次下载的版本是 1.11.3 无 patch。


2) 准备croostool-ng的安装环境
必备工具包:bison、flex、texinfo、automake、libtool、cvs、patch、ncurses、curl、gcj、g++、svn、gwak、cvsd
我们可以通过以下一条命令来获得它们,但需要ubuntu9.10接入网络
sudo apt-get install bison flex texinfo automake libtool cvs patch ncurses curl gcj g++ svn gwak cvsd


3) 安装crosstool-ng
解压crosstool-ng-1.11.3.tar.bz2,进入目录,进行配置:
sudo ./configure --prefix=/usr/local/arm/crosstool-ng,配置安装目录为 /usr/loca/arm/crosstool-ng
编译 sudo make
  安装 sudo make install


4) 配置编译的交叉编译工具链
 本次建立的交叉编译工具链的名字是arm-abzc-linux-gnueabi,所以我们需要先建  立一个编译目录,mkdir /home/stu/tools/crosstools_build,并进入这个目录,然后   cp  crosstool-ng-1.11.3/samples/arm-unknown-linux-gnueabi/* .
 将config文件改名为.config文件,cp crosstool-config .config输入命令:   /usr/loca/arm/crosstool-ng/bin/ct-ng menuconfig,弹出以下菜单,此菜单主要用于   交叉编译工具链的环境配置,请按照以下图形界面配置


 进入Paths and misc options菜单,修改选项Local tarballs directory,这是存放源码压缩包的目录,请确定你的压缩包存放目录,因为我们的压缩包放在了/mnt/hgfs/C/eabi,所以在此,我们选择的是/mnt/hgfs/C/eabi,如下图所示:
 

 其中Working directory为编译过程的主目录,这里可以不用做修改,Prefix directory目录为最后生成的交叉编译工具链存放的目录,如下图所示:
 

 返回到图形界面的主菜单,修改Target options配置选项,修改成如下图所示。其中armv6表示编译出的编译器是支持armv6体系结构的。下面的arm1176jzf-s为cpu核的型号,FPU选择vfp,最后要选择Use EABI
 

Toolchain options选项如下图所示:
 

Operating System选项配置如下图所示,其中目标系统是linux,linux的版本为2.6.38.4,
暂时这样选择,我们还会手动修改最后的配置文件.config
 

Binary utilities选项配置如下所示。这个是用于配置二进制工具的配置菜单,bintuils的源码包版本我们选择最新的2.20.1。
 

C compiler选项配置如下图所示,由于我们制作的工具链版本高,所以会在最后的配置菜单里做手动修改。其中gcc bug URL为遇到交叉编译工具链问题的反馈地址。在此所给出的地址中,学者也可以进入网站获得全手动编译安装交叉编译工具链的方式,而不需要借助crosstool-ng脚本。这里我们仅编译支持了c和c++
 

C library选项的配置如下图所示:
 

Debug facilities选项的配置如下图所示,由于我们不需要编译一些gdb工具,所以我们在这里全部没有选中,感兴趣的学者可以选择他们,尝试更多的功能


Companion libraries选项选择如下,从 GCC-4.3起,安装GCC将依赖于GMP-4.1以上版本和MPFR-2.3.2以上,所以是必选项,GMP是实现任意精度算术运算的软件包,可以完成有符号整数、有理数和浮点数的运算。只要计算机内存的满足需要,GMP的运算精度没有任何限制。MPFR是一个用于高精度浮点运算的C库。
 

做完以上的配置工作后,选择退出,并选择yes保存,这样我们刚才的配置就进入了.config文件中,因为我们后面的编译过程来自于这个文件,我们也对这个文件做了大量的更改以符合我们的环境要求,以下贴出.config文件中所有的内容,如果你的处理器核是arm1176jzfs,可以直接拷贝过去用了。

#
# Automatically generated make config: don't edit
# crosstool-NG version: 1.11.3
# Thu Jun 30 21:40:55 2011
#
# CT_BACKEND is not set
CT_MODULES=y

#
# Paths and misc options
#

#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
# CT_EXPERIMENTAL is not set
# CT_DEBUG_CT is not set

#
# Paths
#
CT_LOCAL_TARBALLS_DIR="/mnt/hgfs/C/eabi"
CT_SAVE_TARBALLS=y
CT_WORK_DIR="${CT_TOP_DIR}/.build"
CT_PREFIX_DIR="/opt/s3c6410/toolschain"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
CT_RM_RF_PREFIX_DIR=y
# CT_REMOVE_DOCS is not set
CT_INSTALL_DIR_RO=y
CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES=y

#
# Downloading
#
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_USE_MIRROR=y
# CT_PREFER_MIRROR is not set
CT_MIRROR_BASE_URL="http://ymorin.is-a-geek.org/mirrors/"
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set

#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"
# CT_PATCH_SINGLE is not set
# CT_PATCH_USE_LOCAL is not set

#
# Build behavior
#
CT_PARALLEL_JOBS=2
CT_LOAD=0
CT_USE_PIPES=y
# CT_CONFIG_SH

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一种基于Linux的操作系统,而crosstool-ng是一个工具生成工具。这个工具允许用户在Ubuntu操作系统上生成交叉编译工具,从而能够在一个平台上为不同的目标体系结构编译和构建软件。 使用crosstool-ng可以为各种不同的目标体系结构生成交叉编译工具,包括ARM、MIPS、PowerPC等。生成的工具包含了一个交叉编译器、库和头文件,可以用来编译和构建适用于特定目标体系结构的应用程序。 Ubuntu的用户可以通过安装crosstool-ng并按照相应的文档和指南进行设置和配置。首先,用户需要在Ubuntu上安装和配置必要的开发工具和依赖项,然后从crosstool-ng的官方网站下载最新的源代码并进行编译和安装。 安装完成后,用户需要使用crosstool-ng提供的配置文件进行配置和设置。用户可以选择合适的目标体系结构,并选择所需的版本和选项。之后,用户可以运行crosstool-ng来生成交叉编译工具。 一旦工具生成完成,用户就可以使用它来编译和构建适用于特定目标体系结构的应用程序。用户可以在Ubuntu上开发应用程序,并将其交叉编译为可在其他平台上运行的可执行文件。 总之,Ubuntu和crosstool-ng的结合为用户提供了一个方便而强大的工具,使他们能够在Ubuntu上生成适用于不同目标体系结构的交叉编译工具,并开发多平台的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值