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版本的。
' r! t- p8 f' W+ u7 x* P
6 Y8 b2 X( u1 O: U S2 Q5 `( P一、下载crosstool-ng,并为使用安装必要的软件。+ \1 n5 H+ W; |% F/ P" x
刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。! r8 E" `/ [& N
* r3 C; `! ]+ K$ z u% K/ d我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。
8 ?! D5 s9 V8 ]4 m& p0 n使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。4 { U3 D2 B/ G5 B5 n
用指令:sudo apt-get install xxx进行下载安装
/ y- ?! ~9 Q2 S7 n* J8 \最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。
3 h3 y @) T5 F4 [1 d7 o7 e6 r* {# i二、解压、打补丁(如果有)并建立工作目录。
# Z8 {8 X. n6 r0 X: R9 b0 O" Zcrosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。: a8 h* u# m7 j# ^4 m
将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录 三、安装crosstool-ng $ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录9 X5 `2 n G( ~
$ cd ~/croosstool-ng4 B, E. L: l0 c& `' S5 z9 p: C2 r% H
$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中
6 W2 L" n3 T, w, m; \ j# x( _. F& Z3 _$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包2 }/ g' d7 B9 A( `6 D
$ cd crosstool-ng-1.9.0 # 进入解压目录( Z) y. S" V( A6 t3 j* }% b; w
$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)
' E) S- v( d! J0 W& Q$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng. Q& @. ?$ ]' h$ u% I
$ make # 编译crosstool-ng
: l. X0 D+ G7 m- b8 t; u2 |! m$ sudo make install # 安装crosstool-ng) E% G z* n; g3 A: p
$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量9 F4 O" Q# c6 o! L" F
$ source ~/.bashrc7 h3 l1 i; X- y2 k8 S X* i
$ ct-ng help 出现帮助信息表明安装成功了 四、配置交叉编译工具链 $ cd ~/croosstool-ng: Y) O. z. D, \4 }) M. P& N
$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录
7 i' X) R1 x8 {3 r8 ?$ mkdir src # 建立保存源码包目录3 _! |6 K) T7 C5 o0 w: L% O1 ^# c
$ mkdir x-tools # 建立交叉编译器的安装路径/ s- T# ^- L' \7 [- y
$ cd crosstool-ng-1.8.1_build/
/ o, u( [+ I9 U+ r3 d! I/ ?, J$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项+ H8 N- V" J% O, J; _5 }
PS:为加快速度,根据配置自行下载相应的软件包。(选做). c) y: H, N# s& e' n+ n2 b9 P
虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:% n! D2 Z* w# K0 l$ ~* }+ L
binutils-2.20.1.tar.bz2
: B. x7 Z$ z6 u a& Zglibc-2.9.tar.gz; C$ e6 `8 W& i. s
dmalloc-5.5.2.tgz+ T4 p# |& E& B( k1 W4 X3 H
glibc-ports-2.9.tar.bz2) T/ Y5 Z9 b5 L6 V
mpfr-2.4.2.tar.bz2& `3 Y' \0 W0 |7 s. N% ~
duma_2_5_15.tar.gz9 B |" _' p3 d" ^+ p
gmp-4.3.2.tar.bz2
: \& p9 X$ B& r% v( n2 mncurses-5.7.tar.gz1 z- M; Y( p e- n
ecj-latest.jar
2 t% q h, G2 o! V* h( ~) flibelf-0.8.13.tar.gz- S3 g9 i5 `7 r
sstrip.c
- n8 G$ Z% w; x* h7 t. _! W) Y, R; Fgcc-4.4.3.tar.bz2
* \/ i* d( [, f( X& Wlinux-2.6.33.7.tar.bz2$ i6 ^ \$ ?$ E9 _6 |
strace-4.5.19.tar.bz2# p1 g/ S2 {; h3 f0 @+ }
gdb-6.8.tar.bz2
; a" w/ c& C! c T! s- _1 ultrace_0.5.3.orig.tar.gz$ f+ L6 W. G8 ]. X& D2 l
: n# A) ~9 V% H( G下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下)# v. Y7 c- ]- V8 R' {) |* b. `) M! z
以上工作都完成以后,咱们就要开始真正的配置工作了。
( l ]0 X6 h5 y6 V2 Z首先用终端进入到crosstool-ng-1.8.1_build/目录下。
# q; v8 f, x9 Z$ }# E+ P1 n然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。
/ y% E- k; z( ^* K1 t1、已下载好的源码包路径和交叉编译器的安装路径。. O% i+ M8 A: f6 k( w( I
Paths and misc options --->1 E3 T+ A2 Y9 u# A* n9 n" _& [- C, z
(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径
5 G+ z- Z0 a( X(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径6 F- v' j7 u4 X5 q, o6 |. p
以上根据自己的路径自行修改, P% j8 y$ y7 A
2、修改交叉编译器针对的构架5 l3 A$ H! { t$ ?/ A5 S. i
Target options --->
$ @ E, r( D5 W4 g% v: I3 \6 c1 i由于咱们是copy的默认的davinci的配置文件,所以这项不用修改
' h8 i6 [9 ?$ k4 |$ K9 M) \( x' e3、增加编译时的并行进程数,以增加运行效率,加快编译。2 M1 W0 `# Y- s( p$ C. u1 L0 f2 g
Paths and misc options --->
! q! g( M! U/ B7 L) I*** Build behavior ***) M9 y X( u" C. J
(4) Number of parallel jobs
) H1 f2 n$ G9 x# U0 L8 T/ t+ n) ~这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了47 N* s. M+ l6 z S6 G* i
4、选择gcc版本号& {0 T2 l- ~6 |
C compiler --->
$ _8 g) ]1 M8 A, \gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3
: Y5 |3 K6 `) b: Z5、其他工具包版本选择
L) ^2 l7 p# YOperating System --->2 O. g+ F$ P# q Z: u" S
Linux kernel version---> 内核版本4 S' Y0 r8 Z2 l4 D8 x
Binary utilities --->2 \$ c' V% g! w
binutils version---> binutils包6 |. b9 W: O8 Q' e( [+ C T: R
C-library--->/ E' Z/ V$ a7 U9 e% F* z) E
glibc version ---> c库7 ?) u9 a, I* r9 r* e
Companion libraries--->4 o# r: u) g3 D9 S" I$ Q. d
GMP、MPFR、PPL、CLooG/ppl等版本的选择
# d. ?( Y4 T, X# _$ K \6、修改操作系统选项,禁止内核头文件检测
" W* S( P9 j0 X" O" _& V6 Q! nOperating System ---> [ ] Check installed headers
/ P, g. E* C$ i" S9 M, K: \- ~另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误
+ b7 ?& l* }2 Z8 P$ M2 y7 j# ~[ERROR] Build failed in step 'Installing CLooG/ppl'
0 a# }9 ?# }4 d$ j% ]3 S O% x[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)1 p# ~9 ?4 X! O0 S$ Y
解决方法:选择CLooG/ppl 0.15.9就可以了。 五、编译工具链 配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?4 R& J) X- X) G5 N! e
编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。! s/ |( I- Z3 C" I3 H( K
最后测试一下工具链版本:8 W+ N# k: J* r( V
#arm-davinci-linux-gnueabi-gcc -v' t1 y$ q: h3 N7 {& Q# g7 w
#Using built-in specs.9 ^. _( _. @& L+ W# @' Q
Target: arm-davinci-linux-gnueabi0 g% q5 g, E. K, r' n
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-long
( u1 a* V# A# O/ S7 _) ~3 ~$ C. ~Thread model: posix8 N& r/ O: A* V
gcc version 4.4.3 (crosstool-NG-1.9.0)
) ^- P: t4 N7 A3 A, D j. Qcrosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
0 d# Y: b! V, f( u* Y* Z$ w" {) J: {使用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 */
" u# P. z! r4 F# o#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
: ?5 I2 ^. U0 R6 s8 {, T0 t: ^8 X: F# error Your version of gcc miscompiles the __weak directive
! l- M0 E+ X5 c1 q0 T#endif 所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎.
% T6 {$ k+ X/ x测试环境: Debian Linux 2.6.18-6-686
$ }6 W1 Y2 K! X, Z8 GUbuntu 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% u3 L7 ~4 w/ D) |1 ]9 K: D# ^
/ e2 k/ z( i' b, ^
Ubuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. . 3.crosstool-ng使用范例 本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程 cd /tmp/crosstool-ng mkdir build_toolchain 0 ?, J) C2 q! o- |3 G/ ~
mkdir ~/src
3 M( Q* a8 j) v! K: Z生成默认配置文件: ct-ng arm-unknown-linux-gnueabi
% X n6 [6 Z* z/ Y也可以这样子:$ B4 T7 Z6 {4 O- |7 A8 ^
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 退出保存配置文件,手动修改内核头文件的安装版本,以修正段错误:9 C: P6 ]% G/ H# G
vim .config 修改kernel的安装版本 CT_KERNEL_VERSION="2.6.18" 修改libc中配置的内核头文件的安装版本至2.6.18 CT_LIBC_GLIBC_MIN_KERNEL="2.6.18" 保存退出(注意若使用ct-ng menuconfig进行配置,上面的手动修改信息会丢失,需再次从头配置)
% T- p4 D. c+ \, D4 }PS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件
8 q, U8 Q j" q4 \4 ^, T' N( L0 K9 I j1 @7 a, q- d0 E; j' n* `* a
! i3 p2 s$ x/ v2 n
-----------我是分隔线 2010快乐 -----------------------------------) y$ G" u6 M- }$ `5 G9 ~0 \5 l
9 c* U) m4 I$ }8 t; s7 Ulibc库已经换用git来管理源码(sources.redhat.com),下面两个包
; x3 _1 h) J3 N6 y( rglibc-cvs-2.9.tar.gz) ` l: ~/ O7 t& W* U# A1 L$ T/ J
glibc-ports-cvs-2.9.tar.gz' Y, @" k6 O. i" J
将无法从cvs中取出,临时可以这样子解决:
% O' D& G- J8 ?; jcd /tmp/
4 ? H; Y4 N6 Q" bwget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2" J4 f' { h4 f5 c8 L% `4 C
tar jxvf glibc-2.9.tar.bz2
, t( Y6 i% W4 p7 ]1 T- e% w Mmv glibc-2.9 glibc-cvs-2.9; F- q( q' g# F, q0 F' }+ e7 e# u
tar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9
, @$ |, v; `( }* z) N& K4 Z" P, H, X' T
wget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2
; y9 C! n7 [- F2 }0 vtar jxvf glibc-ports-2.9.tar.bz2
8 d' o7 s3 ?+ Cmv glibc-ports-2.9 glibc-ports-cvs-2.9
0 i* \: s( K. A; ]/ star zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.94 ^' N' f) q! k
; t9 D+ \3 B, @' g. R" C+ e
复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)
1 N/ q& a1 N/ W
0 C4 d- M7 u# G/ m0 L+ T0 U--------------------------------------------------------------------------------------
开始编绎(在我的机子上耗时一小时) ct-ng build.4(用太多线程,很耗系统资源) 4.为工具链增加新链接 7 l! _# h S& Z. @5 Z E
cd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin ./autoln.sh autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具... 文件名:autoln.sh 拷到要自动建立链接的文件夹使用。 #!/bin/bash, ?3 |4 e8 b' G6 m* R# K
$ ^& `! j" P/ x7 p& m
#
0 R5 Y. h, w; Q) O5 q4 O, M6 t6 C# main' T5 b1 [& ^" Z C- ^8 Q
## {% q4 y2 |) W0 h6 O% U% v
if [ $# -lt 1 ] ; then
* ~% o: f" q. z' q; n d0 Y4 decho "default path: ./"
, f; K# o+ d6 c% Q0 wBIN_PATH=./% ?: H t/ C7 Z3 w. }6 r
else
" `) F r9 ]3 OBIN_PATH=$1/ h5 e) C5 C) o& i4 F
fi( U x1 N, N- u! V1 [% ~
if [ ! -d $1 ] ; then0 W$ ~# ~( A- T- G) D5 A
echo "path error"! k& ^ P% t. O4 k+ Q/ X! n, j
exit
% ?- b, \ C: a I# P4 Pfi2 O( h4 W% b) G! Y
cd $BIN_PATH. J4 D( m6 v i/ S- R6 C/ \
SRC=`ls | awk '{print $1}'`) ], f+ H2 R' ?' Q. @) e F6 E
/ u+ [8 ~0 f1 J. X* t K
for i in $SRC ; do0 E6 B. J/ E4 {2 Z0 W9 s3 G
if [ "$i" != "autoln.sh" ] ; then
" r9 ?6 s! c3 V8 V) _#echo $i% }- u% R( P o' T8 S1 p1 i
TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `5 V4 Z& o4 D; x" V
echo $TARGET) Z' P7 C& p$ m! [5 a3 j6 Y
ln -s $i $TARGET
! N8 J$ s" K" j/ E. C$ e3 yfi
- m# |2 h" _+ z5 |+ P! f* [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'2 |/ }& j6 F/ h6 J2 K i3 `0 {
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
1 ]% N7 ]2 p. r* Z[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'
) \( A& J* W" h[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'4 h$ `1 C- O1 d- F# B
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
! e0 h% c/ A' ]) c[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.3 J: b1 c6 }( n: c
[ERROR] (elapsed: 33:29.56)
' y. f/ T- X! O. X# I% g/ V/ E9 b, w[33:30] / make[1]: *** [build] 错误 127- X8 S: C: h' D* @ W
make: *** [build.4] 错误 2 解决: sudo apt-get install cvs 3. [INFO ] Installing C library headers, f5 D% k% j$ H0 b2 T
[EXTRA] Configuring C library
% |5 w( t# j( L9 N! X[EXTRA] Installing C library headers$ z/ c! H" l3 i% N8 L6 X
[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 v! I3 C4 M. L2 Y) x
[ERROR] make[2]: *** [install-headers] Error 2( `; w$ e$ o1 x$ W6 y
[ERROR] Build failed in step 'Installing C library headers'3 f, T" y4 q8 D) b9 `' y: T% l
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry); v- q, [, B- R. h6 A- C
[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'
+ |% `& N4 z6 k* N$ F2 R[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'' @! {7 D, B- X& U; e+ O
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error./ M9 J4 B0 J0 M, O
[ERROR] (elapsed: 36:41.91)
' H7 u, D8 O+ d M[36:42] / make[1]: *** [build] 错误 2, ]" L6 p9 M+ b
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, m; P/ R: S6 S7 [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 [)/ N4 Q1 X4 ~2 i2 \- |* c7 ], D1 U
[ALL ] /[^
Y4 b8 V3 n4 I: |% j& |$ \4 Q[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
R' i+ {% W$ F[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 ] =================================================================
" d, ^' i1 ~2 N! Q# G# ][INFO ] Installing C library
, {$ z& f5 U' S# I, j[EXTRA] Configuring C library
; D: v6 A( `7 k9 l9 d' y[WARN ] Removing "-pipe" for use with glibc>=2.69 g4 x2 M; ~% s
[EXTRA] Building C library
8 C5 [& `5 |( ?. J[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
}, ]" S L- ~* L3 L0 s: _7 R% V# [[ERROR] make[3]: *** [elf/subdir_lib] Error 20 Y/ O' v" a+ a0 B* W
[ERROR] make[2]: *** [all] Error 27 Y& z# q5 n& r' Q3 J* ?1 @! Z
[ERROR] Build failed in step 'Installing C library'
( D$ r6 g7 [, \" \7 z3 r6 A[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
7 |3 D9 I9 m3 c6 |$ 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'
& N( c2 h! a2 v8 m9 p[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main' o1 N7 u' ]/ N! Q0 j( T' H$ @
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.9 N* s f X$ I1 g$ g
[ERROR] (elapsed: 32:05.76)5 W, ^" k' Y5 C1 P: u
[32:06] / make[1]: *** [build] 错误 24 p, ?5 \4 r7 c; f
make: *** [build.4] 错误 2 解决: sudo apt-get install gawk cd /usr/bin sudo mv mawk mawk.bak sudo ln -s gawk mawk
5 Y* y1 l8 p* |5.
$ G: [+ ^, Y( B; d49567 [ERROR] configure: error: no termcap library found8 v# M3 l- z X; D4 Y: }* n
49568 [ERROR] make[3]: *** [configure-gdb] Error 1( Q7 Y2 }( x% H9 L7 ?' Z
49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
" D y3 F! H+ ]! U8 u' E- @9 W49570 [ERROR] make[2]: *** [all] Error 23 m. d- b' P9 B* ` Q% _4 K5 ? w
49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
+ Q: s! y* L1 v. S0 J49572 [ERROR] Build failed in step 'Installing cross-gdb'; t& L( e* x2 F7 v Z0 O
49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)2 @ L, f" g! G, @2 \) M
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'8 d* I3 j2 K1 |; w( z
49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'
% u+ k" @1 c2 u1 B2 H, |% p49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
8 g" |7 a8 m4 `' {) @6 R ~3 P) N49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.$ k+ U# N. x. f$ N Z- h8 Q
49578 [ERROR] (elapsed: 72:30.97)
5 z0 {# I- f% d0 k7 p/ |
8 {" P/ P y; y/ ~2 k6 T. [: c解决:' Y& _+ r. t) x" f9 _' s
这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)
* h1 V6 y( ?5 \9 w, A( L2 Zcd /tmp
- C. ~; z/ \: O8 K0 T! ywget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz. n! y! f/ J7 Y1 o5 w( P& x
tar zxvf termcap-1.3.1.tar.gz9 b) g0 K% u; Y v- g: M1 T! r2 g3 P
cd termcap-1.3.1; ?/ |) U1 ~, F4 G @; C( w& [ o! R
./configure --prefix=/usr7 c) X' e3 L, K! _
make
0 b9 s) w' o/ r! dmake install
: O5 a: J& Y2 N9 U- o( R+ Q- E(又需要从头编译工具链了 …… )
, C0 L4 x3 B- Q5 L9 M: S+ d9 t |