EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在做davinci平台的系统开发,用的是ti公司的dm6446芯片,这款芯片比较经典所以资料也挺多的,而且ti官方给提供一个dvsdk的软件包,里面包含了包括bootloader、kernel、fs、DSP算法及各种编解码codec,可谓给开发者提供了很多便利。当然里面也包含了ARM-linux的交叉编译工具链,但是版本比较旧了,是基于gcc-4.2.0版本的,现在最新的gcc的版本已经到了4.5.1。所以打算更新一下交叉编译工具链的版本,今天要做的这个交叉编译工具链是基于gcc-4.4.3版本的。
* G% c {5 d: p) X$ e3 I
4 o. ~5 l! _! ^; h$ F6 Q( u# [一、下载crosstool-ng,并为使用安装必要的软件。+ g3 i7 z M7 v
刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。
% j, P9 p0 U- F. h; d' W& Y: T- t- C3 w, U% y( d) q6 r% M& k
我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。
; E* `7 y$ J8 L6 F: x使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。
: B% ]9 C& `0 I3 S8 Z$ }用指令:sudo apt-get install xxx进行下载安装- I( _- Z# G% a H* c2 ?
最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。
! {5 T' L4 |* E" \: l, i, ]二、解压、打补丁(如果有)并建立工作目录。
/ ? y d+ `- h3 {9 T/ |crosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。. N ^5 r5 k7 A% D
将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录 三、安装crosstool-ng $ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录
) E! X* \. E$ ?! d% ]$ cd ~/croosstool-ng3 r( Z& l. u5 @; C2 T& d) m
$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中& O/ j& Y" n1 S. c3 Z. Y" n
$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包" ^$ _2 z' Z' k ]. ?# J9 _: d
$ cd crosstool-ng-1.9.0 # 进入解压目录
! L9 J" F- X% Z$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)8 t2 ^/ }/ r4 E' ?3 ~: L1 M
$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng0 s% e! O7 ~3 j% e" R3 ~$ N% p
$ make # 编译crosstool-ng7 ^9 f0 K" P7 V Z5 g
$ sudo make install # 安装crosstool-ng* |: U# V8 _- m, `1 k8 ]
$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量" N6 e8 i2 W* e1 |
$ source ~/.bashrc# O1 i( w% I6 l
$ ct-ng help 出现帮助信息表明安装成功了 四、配置交叉编译工具链 $ cd ~/croosstool-ng
2 [% P! a! X$ k0 A3 Y; o$ }$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录
( ?; l' v4 n" U2 _4 z$ E$ mkdir src # 建立保存源码包目录: |3 X3 d* A0 q; W2 R3 F( w& {
$ mkdir x-tools # 建立交叉编译器的安装路径
# {, d9 U1 h9 Q# c% ?# C& \1 t$ cd crosstool-ng-1.8.1_build/7 x; T% R, I; u! ^
$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项
# U. T3 o7 c# A! XPS:为加快速度,根据配置自行下载相应的软件包。(选做)4 ?# N2 F6 y9 B3 z
虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:. B: @3 W1 S) W; X1 \: G4 R
binutils-2.20.1.tar.bz2
1 E( t! {: j; G6 w% s1 o8 eglibc-2.9.tar.gz
* Q/ y' F- k+ D6 }& Q, fdmalloc-5.5.2.tgz) d1 i8 t- i. ?! v6 a& h
glibc-ports-2.9.tar.bz2
) A5 @ w9 ?3 }8 Ampfr-2.4.2.tar.bz2" p0 X7 G* W1 \* }, D2 S$ z, p$ [
duma_2_5_15.tar.gz6 R5 \: A" I, }; k+ n3 W, I9 P; h
gmp-4.3.2.tar.bz2- g F A, v$ r7 _% a+ h
ncurses-5.7.tar.gz
% n1 Z$ c- c) @6 K6 j# kecj-latest.jar/ h1 u5 _4 V# `8 @: ~5 s! z
libelf-0.8.13.tar.gz
! K- Y( e0 c, A6 j5 G' K* H- Fsstrip.c, G) i7 \: a( w3 O
gcc-4.4.3.tar.bz24 ]# w5 Y3 Y5 T/ I: Q
linux-2.6.33.7.tar.bz2
& D- [# K) d- _3 {strace-4.5.19.tar.bz24 r. e3 v7 [ i( ]# I/ y: x! ]
gdb-6.8.tar.bz2
9 [* v) \2 f. Cltrace_0.5.3.orig.tar.gz- W' ~" w9 J2 `& r( I( w# t7 f
- `1 S& H! k, D下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下)$ K& a! r" l& [6 z5 S
以上工作都完成以后,咱们就要开始真正的配置工作了。
. w- c3 _$ }0 q5 n: R0 [+ |+ h首先用终端进入到crosstool-ng-1.8.1_build/目录下。
/ r7 g7 u( o; E A6 m- P然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。2 s8 n0 ?/ Z' R4 ^1 C* g: r
1、已下载好的源码包路径和交叉编译器的安装路径。9 Y8 O" \5 w X- l! V
Paths and misc options --->3 B0 f5 H" q6 n" G% V
(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径
; W6 R/ g3 t' Q/ }! k) `8 O2 y(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径
7 w' N8 }" X. p% j9 J- O; f以上根据自己的路径自行修改
3 T- U0 d! k; k2、修改交叉编译器针对的构架0 U4 B5 u) p) H5 C ^& |: [9 Z
Target options --->8 G2 t$ j- U7 v" a1 T4 d; Z8 h
由于咱们是copy的默认的davinci的配置文件,所以这项不用修改
3 x8 `" G6 n F t# g# _$ H3、增加编译时的并行进程数,以增加运行效率,加快编译。
$ ~) d, }# m4 U$ ]( R# ~Paths and misc options --->2 P! R9 K7 w- ~9 U" g: S) ?
*** Build behavior ***/ Q% v( W }: _
(4) Number of parallel jobs; p/ I6 |5 f" E# f. }: d7 Z' l5 ~
这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4
7 C* N" l% m5 Q2 k# t4、选择gcc版本号+ F; p4 x$ J/ d/ l( X
C compiler --->
$ h5 G7 u" D! @gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3% I/ J. X6 i7 d, ?9 W" q
5、其他工具包版本选择9 x n0 a' m4 K8 x, V! M
Operating System --->7 e6 \, b, K6 C2 d1 Q6 ~
Linux kernel version---> 内核版本
/ t8 `) k$ w! `- L5 S* a& p1 PBinary utilities --->3 O3 j: h8 \; l
binutils version---> binutils包
4 N8 v `# m# u( gC-library--->: J1 v6 A. o7 K% i9 n/ y
glibc version ---> c库
9 d) ]0 b# g$ YCompanion libraries--->
3 E6 ~* I1 g, |9 xGMP、MPFR、PPL、CLooG/ppl等版本的选择4 D9 K! a1 S7 T5 A; L& ]4 C
6、修改操作系统选项,禁止内核头文件检测
) V# T9 q4 X: Z* KOperating System ---> [ ] Check installed headers8 R2 k, m/ y# X+ k5 ~, {- e! q
另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误
8 n! Y K! J4 ~7 T$ y& ?% c[ERROR] Build failed in step 'Installing CLooG/ppl'
/ j& v7 F ?7 Y" S* L[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
- m; K) m s/ n! s" v( ^9 w/ s解决方法:选择CLooG/ppl 0.15.9就可以了。 五、编译工具链 配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?
: J( B f7 b7 ?4 d& F- l编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。
* m1 i+ |& e" J* R最后测试一下工具链版本:
( o( v: I X6 ^. `#arm-davinci-linux-gnueabi-gcc -v) l! ?0 p' N! M# r" ]. Q9 x
#Using built-in specs.4 ]) n7 I. b- p( V; G7 ~0 y
Target: arm-davinci-linux-gnueabi
9 p/ {! C6 P3 X( b3 w, \6 [Configured with: /home/chenbolin/crosstool-ng/crosstool-ng-1.9.0_build/targets/src/gcc-4.4.3/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-davinci-linux-gnueabi --prefix=/home/chenbolin/crosstool-ng/x-tools/arm-davinci-linux-gnueabi --with-sysroot=/home/chenbolin/crosstool-ng/x-tools/arm-davinci-linux-gnueabi/arm-davinci-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv5te --with-cpu=arm926ej-s --with-tune=arm926ej-s --with-float=soft --with-pkgversion=crosstool-NG-1.9.0 --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/home/chenbolin/crosstool-ng/crosstool-ng-1.9.0_build/targets/arm-davinci-linux-gnueabi/build/static --with-mpfr=/home/chenbolin/crosstool-ng/crosstool-ng-1.9.0_build/targets/arm-davinci-linux-gnueabi/build/static --with-ppl=/home/chenbolin/crosstool-ng/crosstool-ng-1.9.0_build/targets/arm-davinci-linux-gnueabi/build/static --with-cloog=/home/chenbolin/crosstool-ng/crosstool-ng-1.9.0_build/targets/arm-davinci-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/home/chenbolin/crosstool-ng/x-tools/arm-davinci-linux-gnueabi/arm-davinci-linux-gnueabi//sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long4 e' Y* n$ C$ `, j/ w0 E4 o; L
Thread model: posix: H1 d8 X L q! u& ~/ u1 e3 X
gcc version 4.4.3 (crosstool-NG-1.9.0)
1 R! y* U# R2 c' ucrosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
. k+ r( u: I- R1 I0 G' N使用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 */; G3 W9 F8 D! \/ ~( O$ A
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
5 Z8 j: S( C0 `/ d( u: [% d# error Your version of gcc miscompiles the __weak directive
6 S g/ Y) ^' r9 M) s2 g) H3 p+ C#endif 所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎. 8 B/ F8 L! B) ~- a
测试环境: Debian Linux 2.6.18-6-686, d! i' Z1 D: n/ {+ F0 r
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/down ... ol-ng-1.5.2.tar.bz2 tar jxvf crosstool-ng-1.5.2.tar.bz2 cd /tmp/crosstool-ng-1.5.2 ./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
2 w% E7 a7 o2 J) x- A6 o
3 \9 o! y& v/ q4 a$ tUbuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. . 3.crosstool-ng使用范例 本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程 cd /tmp/crosstool-ng mkdir build_toolchain
' S5 W9 v" x- m2 z/ K' _0 Gmkdir ~/src% ~! m% h9 H; e6 e& Z/ f: A. z4 C
生成默认配置文件: ct-ng arm-unknown-linux-gnueabi
$ X& P1 V ?: ]: O0 l1 o也可以这样子:# [6 T2 x0 |5 ~" c1 o- C
cp /opt/crosstool-ng/lib/ct-ng-1.5.2/samples/arm-unknown-linux-gnueabi/crosstool.config .config ct-ng menuconfig 根据实际情况修改这些配置(我测试的是一款arm7 SOC,其指令集为armv4t) 指定指令集 Target options ---> Architecture level 填入 armv4t 修改工具链安装路径 Paths and misc options ---> Prefix directory() 填入/opt/arm/4.3.2/${CT_TARGET} 修改操作系统选项,禁止内核头文件检测 Operating System ---> [ ] Check installed headers 退出保存配置文件,手动修改内核头文件的安装版本,以修正段错误:1 u( Y6 D- n+ x2 j$ ^5 T* W* H
vim .config 修改kernel的安装版本 CT_KERNEL_VERSION="2.6.18" 修改libc中配置的内核头文件的安装版本至2.6.18 CT_LIBC_GLIBC_MIN_KERNEL="2.6.18" 保存退出(注意若使用ct-ng menuconfig进行配置,上面的手动修改信息会丢失,需再次从头配置) & _& Q, `1 u( ]4 D$ H. W
PS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件5 V. k4 _4 a% m
. ^$ u9 B, N) k1 m. e
; }# p% n8 i- E8 q. q6 B-----------我是分隔线 2010快乐 -----------------------------------3 l4 c; {& Y# F6 {: E! c2 ^# W' r1 K
/ W7 s9 x: f( x
libc库已经换用git来管理源码(sources.redhat.com),下面两个包
2 h; V3 y! ]. v/ }; z" Rglibc-cvs-2.9.tar.gz. n6 ]- P4 U% j
glibc-ports-cvs-2.9.tar.gz) y8 R1 _3 D) \- w9 |5 j
将无法从cvs中取出,临时可以这样子解决:6 t, H4 G9 r& \) E5 g
cd /tmp/
* c% @5 @" m0 X8 a9 K5 @wget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2# i, \% {# R; m2 U
tar jxvf glibc-2.9.tar.bz2
& X& o: Z b! R- {9 G( q+ nmv glibc-2.9 glibc-cvs-2.9
( e: n; m1 r2 y! q- ptar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.95 i) t( `( A8 t" r, q* e3 c
5 \9 d, c( e: E& L
wget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2
* ^6 Y' ~- @5 s5 ]* Y5 Ctar jxvf glibc-ports-2.9.tar.bz2
6 b5 t; B9 @, p" \, ^mv glibc-ports-2.9 glibc-ports-cvs-2.9
3 l* k- D* m+ |8 @7 \; e$ Gtar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9- J! x( {& H1 \
: Z3 z3 y( I4 L R- m9 s8 Z
复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)
" w0 d8 g* F- r g2 a9 f7 n5 p8 H+ ^' r( s
-------------------------------------------------------------------------------------- 开始编绎(在我的机子上耗时一小时) ct-ng build.4(用太多线程,很耗系统资源) 4.为工具链增加新链接
- D. P) c) Y( ?3 P7 J0 icd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin ./autoln.sh autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具... 文件名:autoln.sh 拷到要自动建立链接的文件夹使用。 #!/bin/bash
: b% ~) H0 h6 o! ]' G/ \
2 f" u) e$ B: d. \#
! y( C3 t7 P! c) G) I/ G# main6 ~" ^, f$ u9 I3 i1 d9 t" S
#& d- x% \! s, b, e
if [ $# -lt 1 ] ; then
. G1 F; G+ x. yecho "default path: ./"
5 ?6 g5 k" h! q) H: {9 qBIN_PATH=./% \, g3 V4 ]+ t0 Q
else
, j* B A9 U3 CBIN_PATH=$11 b$ u5 g) `& s+ H' }8 I
fi7 ? e `1 S$ q y
if [ ! -d $1 ] ; then0 ~! O2 e4 p+ k. e. c& D
echo "path error"# {/ E9 ?5 ? E4 x% J2 Z8 E
exit5 r+ e2 X* j* `) A6 h, h
fi7 ?, S$ `$ f+ }4 P: b
cd $BIN_PATH9 D K/ y& O" k5 o+ F `
SRC=`ls | awk '{print $1}'`% l5 `# A: v) C! S. d. B# E4 S9 R
& i, ^5 j! w& Y2 cfor i in $SRC ; do
8 m- W! p4 D) V4 yif [ "$i" != "autoln.sh" ] ; then- j1 m2 \1 m2 Y6 J
#echo $i0 w3 Z0 U- K1 E+ S
TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `
4 z" G m1 O+ recho $TARGET
' l; @5 l4 e9 c6 \3 s8 Iln -s $i $TARGET/ r& Q% j# N9 g
fi+ r% r H9 [2 D) k& {( A
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'$ C: A. v: N, ?5 t+ F
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
) p8 X4 B) ^! z2 w3 }[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'
. C) ~3 `* N: X2 @2 B& j* @* X1 w[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': u$ |. t3 |: P( }4 i7 S
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
2 C% ?* d m2 `% M[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
$ p* d$ d' G: g% @ Y: y. P6 l# T[ERROR] (elapsed: 33:29.56)( L; S5 {" Z/ S
[33:30] / make[1]: *** [build] 错误 127" K2 Y& {1 b7 } U& x+ k" O
make: *** [build.4] 错误 2 解决: sudo apt-get install cvs 3. [INFO ] Installing C library headers" {/ U& N4 w" [4 w- s( B
[EXTRA] Configuring C library( E8 q& O) h! P2 O0 n+ Q4 `
[EXTRA] Installing C library headers/ _) B9 ^) v# P- \/ M9 R6 _
[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- ^; ? n. b! \
[ERROR] make[2]: *** [install-headers] Error 2
: F) F7 U' y- l% d[ERROR] Build failed in step 'Installing C library headers'
" {+ ^$ o: a7 i" \: h[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
, z" L0 p( U9 X! l( {% Z, k[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'
: Q7 v Q' B1 V( O0 Y5 h6 o' Z! ?# f9 d[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
" U: N% S; ?2 B) ^; a[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.$ ]8 R q& g4 K& C6 k- I" E' E
[ERROR] (elapsed: 36:41.91)( J! l) f: z$ z! q, \1 B
[36:42] / make[1]: *** [build] 错误 2
/ m( Z( [6 f/ _/ Fmake: *** [build.4] 错误 2 解决:查看build.log [ALL ] /usr/bin/install: cannot stat `/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc-headers/gnu/li1 A( M0 Y7 O: X$ W U0 x
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 [). B+ X- I& j- Q% V# w
[ALL ] /[^" c8 t- @+ U+ X, E
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
/ Y+ v# ?/ w' v* T- f$ g% t[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 4. [INFO ] =================================================================
* b8 [/ n* N; a; }7 z9 m0 U[INFO ] Installing C library2 P4 f5 y6 H/ e
[EXTRA] Configuring C library# [5 b5 i1 H5 |1 x0 f( q7 ^
[WARN ] Removing "-pipe" for use with glibc>=2.6
- T4 e1 A# w# b5 n6 u c! H- m[EXTRA] Building C library! B' Y% U' ^; \: P9 L+ k
[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
! z9 b9 V/ ?: S( i8 k8 r: B[ERROR] make[3]: *** [elf/subdir_lib] Error 26 ?6 M* ?8 N) y" d& b) N
[ERROR] make[2]: *** [all] Error 2! J( i/ t" m6 |+ }
[ERROR] Build failed in step 'Installing C library': h ~4 Y$ X2 o" }
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
: @7 a Q" s9 O! E' q' o[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'
9 N$ l2 {* a! l# o1 A( P[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'* ~/ W, X( U& c1 p \( w6 \
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
4 ?" @" S4 q6 d1 Z[ERROR] (elapsed: 32:05.76)! Z A% B( Y: t% W" r) Z2 \9 ]
[32:06] / make[1]: *** [build] 错误 2
8 S7 N+ }% H9 ]+ d( C+ Z+ amake: *** [build.4] 错误 2 解决: sudo apt-get install gawk cd /usr/bin sudo mv mawk mawk.bak sudo ln -s gawk mawk
5 p X) Q; p2 m" E/ j) N! ^5.
: i8 Q* v' R& W$ f49567 [ERROR] configure: error: no termcap library found- N9 b7 C& V4 \) ?
49568 [ERROR] make[3]: *** [configure-gdb] Error 1- `1 e% Y, A# ~% @! H0 U) O6 i# E4 S7 W
49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'( Z! Y2 k" Q5 ~# A
49570 [ERROR] make[2]: *** [all] Error 23 @" F1 j6 M4 C/ Y) k" a8 I2 `
49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
1 I. Q, d" x) y& M( x49572 [ERROR] Build failed in step 'Installing cross-gdb'! K8 ~' }+ E {# i- K% |
49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)3 n! Y) `# P% x
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'
* M: i/ [; Q% n. l49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'1 l, r, [. a# }- V1 \( t- Y
49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
- U+ |2 r9 Y- u* i% m49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.* U g' u- A" p' l6 J5 B% c
49578 [ERROR] (elapsed: 72:30.97)
$ ~* o; h* B' x' q# J- a" ~6 Z# r z2 l8 D
解决:
; \. |* N& T2 _# R$ N# A6 `# [这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)
! q( [' }1 X" U0 E: xcd /tmp
- p3 a r) X- {8 z( s, f9 rwget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz( h5 M$ ~. K& k0 D; `
tar zxvf termcap-1.3.1.tar.gz9 O+ P8 r! K' V3 H, @
cd termcap-1.3.19 y: p" ]0 I, Y) ^7 f
./configure --prefix=/usr2 Y% j+ L" v4 h/ c3 W# {
make & C1 V# h2 u4 r3 |& \, S; I
make install
" l# H* m4 V+ z* e3 e+ |+ _9 g(又需要从头编译工具链了 …… )
: d a8 k5 d$ N4 Y |