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版本的。
" t7 T, C: r9 N, G5 E- j/ E0 k- j
一、下载crosstool-ng,并为使用安装必要的软件。" i. z' @6 O+ h2 q
刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。* F5 i# Q3 V+ j- J! E% o
/ R8 M4 O$ x5 F% A) s8 s, G# D, z
我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。& X8 {, ^' e2 q8 B* T7 Z- W" C
使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。
: L, m; ~% Z, N2 ^用指令:sudo apt-get install xxx进行下载安装
; {. D, k* `! `5 ?4 N2 C* [最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。( m+ q4 G' O! |$ s' R* I
二、解压、打补丁(如果有)并建立工作目录。5 ~) |& d6 g2 X
crosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。
7 e% k- s% k4 G# J5 m6 {将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录 三、安装crosstool-ng $ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录 {; y+ q. Z6 W6 @2 U
$ cd ~/croosstool-ng
" n: O$ }, R. y: [$ f! j$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中! f) g6 I0 P9 s7 _8 `. Y! p
$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包
6 r; Y# L( I6 E& j$ cd crosstool-ng-1.9.0 # 进入解压目录; r9 d6 s. x! `# B
$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)& U3 J, O: r1 M! w4 T
$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng! q3 {+ q# x& H$ D$ i2 v3 E! Z
$ make # 编译crosstool-ng
2 f1 ~. O- x3 T- r- S" ^$ sudo make install # 安装crosstool-ng
( U2 Z6 _ h, M; C6 ?2 ~$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量
3 |2 j A& v% Y Q j3 V$ source ~/.bashrc0 B$ ?: M" t: [% _ b
$ ct-ng help 出现帮助信息表明安装成功了 四、配置交叉编译工具链 $ cd ~/croosstool-ng
2 b$ J+ R+ s7 e3 F0 m$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录; e0 |, C) `3 R7 @2 e; g
$ mkdir src # 建立保存源码包目录
6 `7 x, Y# V1 I8 h* n) l1 z5 a$ mkdir x-tools # 建立交叉编译器的安装路径3 ~( Z7 e( Q p \9 n* B9 J
$ cd crosstool-ng-1.8.1_build/3 G! k3 k& v4 i1 Y) ?; ^# n: [
$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项3 C+ b: t$ ]" W( M# Z- z, `( w1 ~
PS:为加快速度,根据配置自行下载相应的软件包。(选做), Y1 z1 W, |$ ^3 U; R" H4 D2 ~) v( u4 T) V
虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:
! V$ _4 b b3 d/ y7 Obinutils-2.20.1.tar.bz2 L5 i. w" m" f$ Q5 Q4 _
glibc-2.9.tar.gz0 C$ \2 J0 _0 |5 o b
dmalloc-5.5.2.tgz
) H6 z( U: N; {glibc-ports-2.9.tar.bz2
" Q1 Q8 Z) p" D, @8 Rmpfr-2.4.2.tar.bz2
8 p2 }& }5 i! U9 ]+ E% k- {8 oduma_2_5_15.tar.gz
) c+ g# I- R9 o4 l& vgmp-4.3.2.tar.bz2" A" u& I' r; u2 Y
ncurses-5.7.tar.gz1 W! v6 {/ u5 V- m% q# J
ecj-latest.jar. I. d3 R7 g9 O" y
libelf-0.8.13.tar.gz
0 b3 I+ `5 m: F( k3 e2 qsstrip.c
+ L$ D7 P4 c% L9 kgcc-4.4.3.tar.bz2& b* S6 [; u | E0 _* d
linux-2.6.33.7.tar.bz24 {% K' ~. n/ A3 {4 ]
strace-4.5.19.tar.bz2
, I! Q/ g! E" Pgdb-6.8.tar.bz2: c6 m9 S5 p( N+ } x0 Z. U' `
ltrace_0.5.3.orig.tar.gz8 n9 q: D0 y. x8 I
; s) _" L% o8 s% }" W- ^/ b
下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下)
j' `" e" ?% r3 C E% C* B5 L. I以上工作都完成以后,咱们就要开始真正的配置工作了。/ }6 j2 Q6 L& S' H0 t& M
首先用终端进入到crosstool-ng-1.8.1_build/目录下。
5 x4 \: V" i5 ]然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。6 H% q( U, Z" ?& U6 R) o
1、已下载好的源码包路径和交叉编译器的安装路径。
* m4 X" L" y! b! P, C7 s, [% X# R' IPaths and misc options --->
# M/ Y; l8 J! |# n(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径4 Q6 {; J0 ]% ^0 ?
(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径
7 I0 O4 N# F/ R以上根据自己的路径自行修改
1 R; c/ z, {0 J" p C+ J2、修改交叉编译器针对的构架
$ H3 t+ L2 o4 {% hTarget options --->( u# @2 M8 {: e5 b
由于咱们是copy的默认的davinci的配置文件,所以这项不用修改 }; u5 P+ ~& T1 k+ f6 h+ y# H
3、增加编译时的并行进程数,以增加运行效率,加快编译。
1 d- n9 w% H3 d! `$ G9 tPaths and misc options --->
; F$ G. v' C. g/ n, p*** Build behavior ***& s. n( k% E% p+ ?
(4) Number of parallel jobs6 i" A: L3 N0 i& }2 k i% ]
这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4
7 A# Q0 c9 P; K9 N* Y4、选择gcc版本号5 m4 E% K, _/ [: ]+ k' o
C compiler --->% X3 }9 i1 Z7 E `/ ?
gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3; M+ `- }5 B8 x$ r/ ^
5、其他工具包版本选择
7 b! B) L5 j) j7 T$ H1 VOperating System --->
?3 N* \! y" m) {* sLinux kernel version---> 内核版本
. Z: j ^5 Y0 V ] U: C5 n# SBinary utilities --->$ z. u4 H$ `% P, U; w( p _% T
binutils version---> binutils包
8 P% J6 G1 A! B& VC-library---> ]7 R6 m* p: d, ]/ F" x# g/ x; y! @
glibc version ---> c库 s+ O1 I$ L ~( Q- d5 j
Companion libraries--->
- S/ h( j. R8 Q0 f! sGMP、MPFR、PPL、CLooG/ppl等版本的选择
( B3 v- `8 t3 ]7 Y1 l7 r( [1 y6、修改操作系统选项,禁止内核头文件检测
2 G* R6 ]2 r8 l) H3 T7 f# `+ `1 H8 ^Operating System ---> [ ] Check installed headers7 M! n T3 N* L, G- Z! l4 g" W. d
另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误
: R. e, c' D! u: C9 B$ b& d0 m[ERROR] Build failed in step 'Installing CLooG/ppl'
/ Z# I3 o$ |8 F$ i3 B[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)1 x* D6 g8 i# M& p! f' Q5 Q
解决方法:选择CLooG/ppl 0.15.9就可以了。 五、编译工具链 配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?
$ n4 x! j9 U' g- Z7 i$ y编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。! T2 j0 R, C9 g/ V( |" ~' I
最后测试一下工具链版本:
3 l3 d. t) O2 }: e0 t; S8 R5 W#arm-davinci-linux-gnueabi-gcc -v
2 W' v% P, \& U0 L0 K1 a# G#Using built-in specs.
, ~; l& ~1 E6 |% NTarget: arm-davinci-linux-gnueabi
8 `$ \ F" C- \# c( e6 m. v y2 E/ ?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-long5 \0 v/ e! P J* Z* w5 l( N! ^7 y
Thread model: posix
* g' \2 F4 {# P7 Y3 \/ x" a; Lgcc version 4.4.3 (crosstool-NG-1.9.0)
( I6 E- h, m' T8 E- K# qcrosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
: {' t( x+ ^9 h$ V5 a5 y6 T0 H! K: U使用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 */5 Z' t( d5 M" N8 }! r" `, r- N
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1- m, R p$ H$ c# V' A5 A
# error Your version of gcc miscompiles the __weak directive
! S: i8 T; b; m9 ]" G#endif 所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎.
% p( W+ l5 o0 e. q* \6 S- g8 p测试环境: Debian Linux 2.6.18-6-686
2 X0 L2 {3 Q4 R R/ n5 I- S" i- \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* P; o6 H: S* Q
' J, I$ i ~' T3 ^Ubuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. . 3.crosstool-ng使用范例 本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程 cd /tmp/crosstool-ng mkdir build_toolchain ) v( H0 D# E9 K+ u) ~
mkdir ~/src
e3 T7 R" W+ P" x0 {# e v生成默认配置文件: ct-ng arm-unknown-linux-gnueabi
{( G b/ t; u" O; {/ ?也可以这样子:
0 y: r2 h1 Q0 w, V* ocp /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 退出保存配置文件,手动修改内核头文件的安装版本,以修正段错误:
& J* ~8 A& P& w3 W' G3 s, n9 N/ Xvim .config 修改kernel的安装版本 CT_KERNEL_VERSION="2.6.18" 修改libc中配置的内核头文件的安装版本至2.6.18 CT_LIBC_GLIBC_MIN_KERNEL="2.6.18" 保存退出(注意若使用ct-ng menuconfig进行配置,上面的手动修改信息会丢失,需再次从头配置)
; u1 |+ l/ N4 i$ `+ G/ {PS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件5 [7 ~- R8 u# b- I: H1 t
! o# b$ y1 b; M- U3 P1 W' l
' V5 V4 B9 S8 {3 h/ r5 C! }-----------我是分隔线 2010快乐 -----------------------------------
! {8 B* y" D( f% r C
g, Z* O# Y- j1 F( s; K( {libc库已经换用git来管理源码(sources.redhat.com),下面两个包
[- U( l ^* e l [9 Aglibc-cvs-2.9.tar.gz
/ z# c& ^, @6 D# Kglibc-ports-cvs-2.9.tar.gz
2 ^1 ?! D. g7 P9 \8 |$ O8 M! l将无法从cvs中取出,临时可以这样子解决:3 d- n: v8 R3 F% L, d, E' r
cd /tmp/
5 ^; u H o" O3 X9 awget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2
# i# o* T$ f$ l( f+ ~6 [! Qtar jxvf glibc-2.9.tar.bz2
1 U6 Y( }; L: T1 X) Dmv glibc-2.9 glibc-cvs-2.9
% k) `, a! R% \3 q& e" B8 utar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9
) g& P( C# s) n1 `# n2 K! g1 T4 w. }3 G* k' r# J, j
wget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2* p5 B( e' \) \! T2 [ x
tar jxvf glibc-ports-2.9.tar.bz2
, G0 Z x! ^$ g! K/ F4 rmv glibc-ports-2.9 glibc-ports-cvs-2.91 E! R' v3 i9 ^4 G) { Q) p
tar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9
, M5 c, d- u. O8 X. R, d
$ w7 G3 ?3 U) K7 q+ S复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)' V, A/ y8 P( f7 u: P
- o' K& V. f9 }. Q
--------------------------------------------------------------------------------------
开始编绎(在我的机子上耗时一小时) ct-ng build.4(用太多线程,很耗系统资源) 4.为工具链增加新链接
( `# I& y! x' [$ l) Wcd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin ./autoln.sh autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具... 文件名:autoln.sh 拷到要自动建立链接的文件夹使用。 #!/bin/bash
! f. O/ x3 I/ n/ D; e' d
3 Z8 s6 j+ @8 D#* J8 `: R: K( J( z8 @: _
# main2 q, F, ^7 z! h( h+ R, B
#5 k; ?% h" f& O" A
if [ $# -lt 1 ] ; then- p; _7 H } o6 e8 a6 }* J
echo "default path: ./"* f2 q' |9 _: m W* z, S* h
BIN_PATH=./
& X6 _" ~0 K* Z% aelse
\8 r/ P6 y9 Y2 k. IBIN_PATH=$17 `: _2 F7 M3 I; R. a0 B
fi- o4 X; m0 L. J0 k
if [ ! -d $1 ] ; then# G! t& v8 f$ @: ?: r' I
echo "path error"' \8 F* T$ y# x, H3 Q; k \
exit
* z( ^' g$ A; @- o" i/ u/ k0 Efi
* ?' q: y7 B" a8 n: ~cd $BIN_PATH
" X# h/ Z7 i! `* ]% E9 W5 D; ESRC=`ls | awk '{print $1}'`
% D* y6 g5 R4 k1 x6 I4 E& f) ^- U5 \$ [0 S1 ~$ {9 @) Y
for i in $SRC ; do3 ]$ e3 f \' _ b
if [ "$i" != "autoln.sh" ] ; then
1 I4 y( i7 k( [. H K#echo $i, \' l9 L1 \0 `# O/ Y }* S
TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `
: z* g7 F' T6 I$ u+ oecho $TARGET
$ B8 E" K( |1 `6 eln -s $i $TARGET
3 e" [/ D! F5 J E5 wfi7 z ~7 s6 y, h% f6 ?5 k
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'. k3 ]1 d) Y+ `
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
) Z/ u9 \% R5 v# C, w" Z[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'6 {6 G4 T/ y9 _& @6 C$ l' P
[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'+ C& z/ P8 w+ Y7 ?* O
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
# [" k% y* W% X' r[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
9 Q+ a& i) U$ Y) L; F# h9 @. W. ~[ERROR] (elapsed: 33:29.56): {1 ?5 _" [: g7 x' k* X
[33:30] / make[1]: *** [build] 错误 127
2 p. L& n. i1 j8 H4 `make: *** [build.4] 错误 2 解决: sudo apt-get install cvs 3. [INFO ] Installing C library headers6 g" v0 B- i) }1 S/ ]" z5 E
[EXTRA] Configuring C library
+ T0 K0 Y) B, G4 D[EXTRA] Installing C library headers1 O# l! w, j* o0 L4 y& S5 h
[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
: B* G T6 }9 x$ C( f% R[ERROR] make[2]: *** [install-headers] Error 2' V+ V) U$ ^$ @8 N* i1 A; c
[ERROR] Build failed in step 'Installing C library headers'
/ L2 `4 t6 I$ z5 S0 {[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)% C" d% `6 |) w: L5 n
[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'9 |7 x. c9 n* g# i- \
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
, ~1 _2 e- J3 I1 r4 I3 R[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
4 Y1 C X2 X5 S y5 e[ERROR] (elapsed: 36:41.91)
8 Q$ X& w: N5 m# j[36:42] / make[1]: *** [build] 错误 2: E8 c$ v& P" G
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; S8 g& |: J. G- u) 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 [)( l5 x) N" t% T& S8 C: J
[ALL ] /[^4 W {8 U0 }+ t& I2 b
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
4 K' G* {! a: e[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 ] =================================================================8 J$ J) v7 [8 C- c7 a
[INFO ] Installing C library
9 c, U5 C9 O# _( @% o4 w# A+ l[EXTRA] Configuring C library
7 w* ?0 t8 n0 q9 @[WARN ] Removing "-pipe" for use with glibc>=2.66 R5 ]' a! J* X5 ~3 e0 Q
[EXTRA] Building C library
( m4 V) C& D$ A* t" E. i[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
# q9 ^1 A) w5 K/ n[ERROR] make[3]: *** [elf/subdir_lib] Error 2
+ k1 }. ?4 Y( t[ERROR] make[2]: *** [all] Error 2
+ c" Y, T- t. u: f9 S+ b2 P! t% O[ERROR] Build failed in step 'Installing C library'
* W$ H; [! q( `[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry) q0 x6 i3 |4 }- v: R: m
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'* ~1 F: W$ }7 k3 H8 J+ D% K
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
. ~" [) {) f# }6 J[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.# a' w9 {+ n5 m$ w7 z
[ERROR] (elapsed: 32:05.76)3 p8 e- D7 [$ [- A
[32:06] / make[1]: *** [build] 错误 2
" F: [" B r) B% E+ A0 vmake: *** [build.4] 错误 2 解决: sudo apt-get install gawk cd /usr/bin sudo mv mawk mawk.bak sudo ln -s gawk mawk
" F. }2 G9 b. C: k4 ^* r; x5.
7 _6 h5 K' d7 L; [4 W0 R49567 [ERROR] configure: error: no termcap library found
, ~+ [9 Y8 Y; h! s+ J49568 [ERROR] make[3]: *** [configure-gdb] Error 1% A& z: X5 n( o/ w& d6 P
49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
) U; x' b! S5 e" M/ q# F49570 [ERROR] make[2]: *** [all] Error 2
2 r. |, |$ M: Q5 S/ Y1 M$ D49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'; _5 i s4 G* X+ E- |1 j
49572 [ERROR] Build failed in step 'Installing cross-gdb'
- j! i/ D# v5 z; F/ b49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
- Y( p6 K/ G8 _$ w0 O) z49574 [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'
- O6 p- K3 T) u. I49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'
8 j' Q, X$ Y; {2 I" o49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'& z( R# _, e+ h; u5 m1 B. q' h1 i
49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.; ^7 E5 k0 l1 R" }0 u- ]
49578 [ERROR] (elapsed: 72:30.97)( \+ W' e) @ p& e2 ^& `+ g7 w
3 U* z$ S3 t: i. c3 X解决:
" s" j Y; K# J U# z这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)
; u8 d: i5 L* P$ j: |cd /tmp
, n5 S0 |: N. b1 G* n8 P: uwget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz' G7 J8 {9 C, p3 C
tar zxvf termcap-1.3.1.tar.gz% _; M# j) f2 c) i0 h, }2 J7 y
cd termcap-1.3.1
5 B7 W( a- b" V ?- @( e0 R./configure --prefix=/usr5 B/ o+ i# L5 s& ]5 `; z! ~
make
' {$ D$ O& K. d- T0 W' dmake install
& J2 z( `+ ] a3 v(又需要从头编译工具链了 …… )
8 H9 r* Y% { o7 [8 o, F |