Chinaunix首页 | 论坛 | 博客
  • 博客访问: 429891
  • 博文数量: 143
  • 博客积分: 455
  • 博客等级: 一等列兵
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-03 00:11
文章分类

全部博文(143)

文章存档

2018年(10)

2017年(6)

2016年(28)

2015年(14)

2014年(67)

2013年(1)

2012年(17)

我的朋友

分类: LINUX

2014-02-12 21:23:20

俗话说,工欲善其事,必先利其器。

首先准备好开发的环境。

硬件:FS2410开发板

软件:ubuntu12.04。。内核就用2.6的。。

源码包:

crosstool-ng-1.8.1.tar.bz2


并下载补丁

000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

001-binutils_binutils_remove_faulty_patch.patch

002-kconfig_resync_curses_check_with_Linux_kernel.patch


binutils-2.19.1.tar.bz2

gcc-4.3.2.tar.bz2

glibc-ports-2.9.tar.bz2

linux-2.6.35.tar.bz2

ncurses-5.7.tar.gz

dmalloc-5.5.2.tgz

gdb-6.8.tar.bz2

gmp-4.3.2.tar.bz2

ltrace_0.5.3.orig.tar.gz

strace-4.5.19.tar.bz2

duma_2_5_15.tar.gz

glibc-2.9.tar.bz2

libelf-0.8.13.tar.gz

mpfr-2.4.2.tar.bz2

Sstrip.c

centos 下必须yum install glibc-static,否则会出现找不到 lc ,Build failed in step 'Installing native gdb'错误。

1、源码下载

Crosstools-ng下载地址

http://ymorin.is-a-geek.org/download/crosstool-ng/

同时对每一个版本都有相应的补丁我们尽量把这些补丁打上,这些补丁的下载地址是

http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/

注:我这里选用的是crosstool-ng-1.8.1.tar.bz2


并下载补丁

000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

001-binutils_binutils_remove_faulty_patch.patch

002-kconfig_resync_curses_check_with_Linux_kernel.patch

2、工具的安装

在使用之前必须安装一些软件

$sudo apt-get install gawk autotools-dev automake texinfo libtool cvs patch bison flex libncurses5-dev

3必要目录的创建

/home/linux目录下,

$mkdirs3c2410-2.6.35

$mkdirtoolchain

$cd s3c2410-2.6.35

$mkdirtoolchain

$cdtoolchain

$mkdir toolchain-build

$mkdir toolchain-install

把下列源码包复制到目录/home/linux/s3c2410-2.6.35/toolchain

crosstool-ng-1.8.1.tar.bz2

000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

001-binutils_binutils_remove_faulty_patch.patch

002-kconfig_resync_curses_check_with_Linux_kernel.patch

4解压源码并打补丁

$tar xvf crosstool-ng-1.8.1.tar.bz2

$cd crosstool-ng-1.8.1

$patch –p1< ../000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

$patch –p1 < ../001-binutils_binutils_remove_faulty_patch.patch

$patch –p1<../002-kconfig_resync_curses_check_with_Linux_kernel.patch

5、配置并编译crosstool-ng-1.8.1

$./configure--prefix=/home/linux/s3c2410-2.6.35/toolchain/toolchain-install

$make

$make install

6配置工具链选项

$cd ../toolchain-build

$cp ../crosstool-ng-1.8.1/samples/arm-unknown-linux-gnueabi/* ./

$mv crosstool.config .config

$../toolchain-install/bin/ct-ng menuconfig

Pathsand miscoptions --->

(${HOME}/src)Local tarballs directory

(${HOME}/x-tools/${CT_TARGET})Prefix directory

修改为

Pathsand miscoptions --->

(/home/linux/Downloads)Local tarballs directory //源码包存放路径

(/home/linux/toolchain)Prefix directory //工具生成后的安装路径


(1)Number of parallel jobs

这里还有一个至关重要的选项。

forbiden download一定要选上,否则会出现下面的下载原文件。我们自己已经下载好了所以不要再下载了。。

Targetoptions --->

(armv4t)Architecture level

(arm9tdmi)Emit assembly for CPU

(arm920t)Tune for CPU

Ccompiler --->

[] Java

Ccompiler --->

(crosstool-NG-${CT_VERSION}-farsight)gcc ID string



OperatingSystem --->

[] Check installed headers


Toolchainoptions --->

(none)Tuple's vendor string


修改.config文件,将文件中的2.6.33.2全部改为2.6.35

2

7目标代码准备

拷贝下面文件到/home/linux/Downloads目录下:

binutils-2.19.1.tar.bz2

gcc-4.3.2.tar.bz2

glibc-ports-2.9.tar.bz2

linux-2.6.35.tar.bz2

ncurses-5.7.tar.gz

dmalloc-5.5.2.tgz

gdb-6.8.tar.bz2

gmp-4.3.2.tar.bz2

ltrace_0.5.3.orig.tar.gz

strace-4.5.19.tar.bz2

duma_2_5_15.tar.gz

glibc-2.9.tar.bz2

libelf-0.8.13.tar.gz

mpfr-2.4.2.tar.bz2

Sstrip.c


出错:Buildfailed in step 'Installing sstrip'


[ERROR] Error happened in'/home/linux/Desktop/paper/crosstools/toolchain_install/lib/ct-ng-1.8.1/scripts/functions'in function 'CT_DoExecLog' (line unknown, sorry)


[ERROR] called from'/home/linux/Desktop/paper/crosstools/toolchain_install/lib/ct-ng-1.8.1/scripts/build/binutils/sstrip.sh'at line # 28 in function 'do_sstrip'


[ERROR] called from'/home/linux/Desktop/paper/crosstools/toolchain_install/lib/ct-ng-1.8.1/scripts/crosstool-NG.sh'at line # 586 in function 'main'


[ERROR] Look at '/home/linux/Desktop/paper/crosstools/toolchain/build.log'for more info on this error.


[ERROR] (elapsed: 6:49.98)


[06:50]/ make: *** [build] Error 1

解决:

Sstrip.c从官网下载下来的需要加入头文件

#include


#include




8工具链编译

$../toolchain-install/bin/ct-ng build

这个过程比较时间比较长,2小时左右

9环境变量的添加

修改文件/etc/bash.bashrc添加如下内容

export PATH=$PATH:/home/linux/toolchain/bin

重启配置文件

$source bash.bashrc

  1. 工具链的测试

$arm-none-linux-gnueabi-gcc –v

Using built-in specs.

Target:arm-none-linux-gnueabi

Configured with: /home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/src/gcc-4.3.2/configure

--build=i686-build_pc-linux-gnu-host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi--prefix=/home/linux/toolchain

--with-sysroot=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root--enable-languages=c,c++,fortran --disable-multilib--with-arch=armv4t --with-cpu=arm9tdmi --with-tune=arm920t--with-float=soft --with-pkgversion=crosstool-NG-1.8.1-none--disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap--with-gmp=/home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static--with-mpfr=/home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static--enable-threads=posix --enable-target-optspace--with-local-prefix=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root--disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long

Threadmodel: posix

gccversion 4.3.2 (crosstool-NG-1.8.1-none)

这个时候我们的工具链就生成了


重新编译交叉工具链,出现几个错误,记录在下,对读者有用请留言。。。原创的哟


1、文件名,一定要和http://blog.csdn.net/yongyici123/article/details/7651383文中说的一样,否者会出现retriving 的错误


选了 forbid download 的就不要看了。。。。。

2、交叉编译的机器一定要能联网,且http://blog.csdn.net/yongyici123/article/details/7651383所需文件的网站没有被封


3、出现retriving的错误时,不要慌张。。看看对应的网址对不对。。举个例子,笔者遇到过rectriving sstrip的错误。

怎么找也找不到原因,log里也是现实retriving sstrip错误。没有详细信息。但是在crosstool-ng-1.8.1\scripts\build\binutils\sstrip.sh中找到了问题

第9行CT_GetFile sstrip .c http://git.buildroot.net/buildroot/plain/toolchain/sstrip,

http://git.buildroot.net/buildroot/plain/toolchain/sstrip这个网址根本没有sstrip。。于是我找了个有sstrip的网站

https://dev.openwrt.org/browser/trunk/tools/sstrip/src/sstrip.c  注意只要把前面https://dev.openwrt.org/browser/trunk/tools/sstrip/src/写进去就ok了。

4、说下里面的一些像函数一样的东东的意义,,

CT_GetFile 下载文件,

CT_DoStep INFO 打印信息

CT_DoLog EXTRA 打印日志

最后,说一下,baidu坑爹。。。google才是王道
转载自:http://blog.csdn.net/yongyici123/article/details/7651383

阅读(3086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册