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版本的。
1 F+ Q# Y0 L, K* a0 |
* J/ i: v" o0 O+ f0 I8 w7 L一、下载crosstool-ng,并为使用安装必要的软件。
3 w3 ^8 U6 h5 Z1 q2 ~刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。; C2 s# T+ K p% w
' I/ M: [, `% H4 z* p- `我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。/ U$ h" M& x- M9 v7 F8 d) ?3 D
使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。! T; Z9 R: D P7 y
用指令:sudo apt-get install xxx进行下载安装0 L, Z7 s6 d" n0 w
最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。
+ O8 R7 p+ B4 k: k3 S9 |. a& C二、解压、打补丁(如果有)并建立工作目录。
z2 r' T; O* Q4 O5 _! @crosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。( J4 ]# V+ Z4 C
将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录 三、安装crosstool-ng $ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录- k$ }& c. D" W* r
$ cd ~/croosstool-ng+ p- B: B6 C( U/ E. B3 R# n
$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中
( ]; b! q0 @4 q+ B* V$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包# W0 H, w8 P) X5 H& Q. G1 N+ w! Z' w
$ cd crosstool-ng-1.9.0 # 进入解压目录
* N( R3 N" \+ \6 l0 E/ z% [- b, F$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)
0 `0 G I5 i9 b z8 b$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng
4 H% E* U( I* X/ B" `/ P$ d1 x; {$ make # 编译crosstool-ng1 z2 i: ?/ C3 M- L5 g' n
$ sudo make install # 安装crosstool-ng0 l* H. v/ n+ w7 i
$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量6 S8 E m& ~& y$ } c- N, W5 m
$ source ~/.bashrc8 U. q J, o4 K
$ ct-ng help 出现帮助信息表明安装成功了 四、配置交叉编译工具链 $ cd ~/croosstool-ng' w0 ?% p. J! @' I5 s# f: q# ]& Z
$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录- N$ ^, Y7 H9 k+ S1 l0 G$ l
$ mkdir src # 建立保存源码包目录& Z9 H. q! j& o8 \$ @" y
$ mkdir x-tools # 建立交叉编译器的安装路径& A8 B* W4 `2 o- f& u# o
$ cd crosstool-ng-1.8.1_build/- k2 X9 V: k3 P! P* ^4 z
$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项! J( l+ B$ M$ d# Z+ q
PS:为加快速度,根据配置自行下载相应的软件包。(选做)
- r0 r" T1 T6 {6 K& [8 V虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:
1 c) ]9 d# C- l% rbinutils-2.20.1.tar.bz2" ?/ ^' `: R3 B! i% f
glibc-2.9.tar.gz; C f; y9 q; j# T8 R
dmalloc-5.5.2.tgz
7 F8 E7 I6 {; V& g7 j( }# Xglibc-ports-2.9.tar.bz28 O2 A# M5 G2 `4 U# ^, z
mpfr-2.4.2.tar.bz2
" h" x& ~+ Q+ m: m7 gduma_2_5_15.tar.gz
" \% m1 k& O+ p2 a6 zgmp-4.3.2.tar.bz20 @7 b8 w# ]9 f- e+ h5 \
ncurses-5.7.tar.gz
# Z6 l3 z# c, }7 jecj-latest.jar
) @2 F9 Q8 {+ [3 R+ u: mlibelf-0.8.13.tar.gz9 G$ l+ B4 M/ w4 U- G J
sstrip.c
2 L3 A4 B A; } p& y; ^gcc-4.4.3.tar.bz2 f$ x @$ @ N6 |
linux-2.6.33.7.tar.bz2
) _3 u* n7 V7 t# x/ gstrace-4.5.19.tar.bz25 A5 E- o% A# v) h; ^. x+ m5 j
gdb-6.8.tar.bz2' f3 t3 l, Q9 B
ltrace_0.5.3.orig.tar.gz: N; T6 |: n5 { w
0 H0 k$ ^( G& D
下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下)4 n0 Q1 s" _6 `2 O! ~5 s! f
以上工作都完成以后,咱们就要开始真正的配置工作了。
0 p2 p. W. o# R- M {& R9 i' v# R首先用终端进入到crosstool-ng-1.8.1_build/目录下。
/ W6 [% F1 K6 D然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。0 O/ Q* J) I: n4 A3 l' W
1、已下载好的源码包路径和交叉编译器的安装路径。
1 u9 ^) y+ `8 s( P. \0 w2 sPaths and misc options --->
9 A) U1 m7 ~2 h, P0 ^8 H(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径: `; T7 e; Y, O& @% R) M
(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径
g4 g" X v0 V6 J0 K8 N以上根据自己的路径自行修改
) `9 ~# {& W2 `* E% L& |2 J2、修改交叉编译器针对的构架7 U5 \. n- |) }
Target options --->
2 Q* U# x: `& Y& M' S由于咱们是copy的默认的davinci的配置文件,所以这项不用修改6 K$ J5 Q' D1 F7 I6 u* J l8 ?: }
3、增加编译时的并行进程数,以增加运行效率,加快编译。& d# C' Q* ]: h* G4 r) P- m$ M* n
Paths and misc options --->& S: E$ r0 g1 w7 Y5 {
*** Build behavior ***
6 m7 i' |. R8 l1 F- {# _(4) Number of parallel jobs
# a% b4 n; a, Y这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4( B# T) ]. E& q+ O8 e4 L- m1 k
4、选择gcc版本号7 h2 w- n+ H9 u8 `" J
C compiler --->
" D9 A- e( ~$ Y+ Y# o4 h, T3 ^gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3
( k8 }, x7 s! A! _# t5、其他工具包版本选择
$ m' V d" Q3 F) mOperating System --->
) k5 i$ y/ m0 M1 c+ k9 B4 _( @Linux kernel version---> 内核版本% E: M; Q! x9 g/ G1 u
Binary utilities --->+ W* J) |+ b Q; e2 s# R5 H
binutils version---> binutils包
5 g7 P5 L4 {+ TC-library--->
% e& n9 i% w9 kglibc version ---> c库6 Q% _! @6 u& g7 A
Companion libraries--->
+ V4 u! m& e+ B( }/ N4 h- Q* Q' Y9 H6 uGMP、MPFR、PPL、CLooG/ppl等版本的选择/ O, t5 f8 \; q8 d. C& e
6、修改操作系统选项,禁止内核头文件检测
! Z$ ~1 y/ s3 b& ?: \" |8 S$ JOperating System ---> [ ] Check installed headers
/ P$ {% v1 F8 J9 k另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误 n( [; [9 P. G1 }
[ERROR] Build failed in step 'Installing CLooG/ppl' B4 k: Z1 N& @- h* k
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
" S- f x2 d6 P% {. ]; M, ]解决方法:选择CLooG/ppl 0.15.9就可以了。 五、编译工具链 配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?; |# I3 S9 |8 h( j
编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。2 n0 `+ G0 \4 C1 e. O2 O8 T$ i" _
最后测试一下工具链版本:
3 \9 j: R6 p5 C#arm-davinci-linux-gnueabi-gcc -v4 M& S f/ s1 L# j5 F1 d2 O3 h2 H
#Using built-in specs.
# Y! W9 f# ]$ Y$ BTarget: arm-davinci-linux-gnueabi# e; B0 o9 j3 B5 j5 R$ D4 D0 |8 R
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
{% C2 b+ f, u* u, {3 Q6 PThread model: posix
9 C1 H7 R9 U3 n$ J( Lgcc version 4.4.3 (crosstool-NG-1.9.0) ) t3 }: s! P9 K% t! w( g2 M; K. u
crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
6 ~2 g! m, R4 Z" B" J3 g使用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 */
% P6 I8 o/ v, X7 u7 X4 {: A2 @- ?) m#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
- P0 R% x! s @ @# error Your version of gcc miscompiles the __weak directive* p& g$ ]0 H7 Z/ k2 D/ Y
#endif 所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎. " k/ K4 v6 z! I! Z: ?% e. R1 d
测试环境: Debian Linux 2.6.18-6-686
. c' e4 v9 |6 ]" oUbuntu 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
6 Y* N |- }6 H, G" r/ W( n6 a' x
% g C- J4 ^! R6 BUbuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. . 3.crosstool-ng使用范例 本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程 cd /tmp/crosstool-ng mkdir build_toolchain 6 }1 D9 {! N; B
mkdir ~/src; x: O) w8 q: ^3 ?) E) `
生成默认配置文件: ct-ng arm-unknown-linux-gnueabi
+ N$ G3 a% c( n也可以这样子:, k. x- X/ @$ P& v% l& m
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 退出保存配置文件,手动修改内核头文件的安装版本,以修正段错误:
3 u# x, ?9 ]7 L# Ivim .config 修改kernel的安装版本 CT_KERNEL_VERSION="2.6.18" 修改libc中配置的内核头文件的安装版本至2.6.18 CT_LIBC_GLIBC_MIN_KERNEL="2.6.18" 保存退出(注意若使用ct-ng menuconfig进行配置,上面的手动修改信息会丢失,需再次从头配置) 1 I; P) D! `$ A' `3 C% u
PS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件 Y3 F+ u( h% M7 a% m
) [# }) n' L0 E+ ?) N" E: ~* T! ]0 l2 @* [! B3 R/ O) E- E
-----------我是分隔线 2010快乐 -----------------------------------* u6 f9 v) B. E K+ l' L8 E1 ~% u" P W
9 P! [& l- B/ F& R: N7 r
libc库已经换用git来管理源码(sources.redhat.com),下面两个包
( V$ V1 O" L' B$ \6 xglibc-cvs-2.9.tar.gz! ^7 D$ w6 v l3 W0 G
glibc-ports-cvs-2.9.tar.gz
0 R6 E( G8 D$ ~+ b8 p8 }, Z将无法从cvs中取出,临时可以这样子解决:
' H* H/ k2 c, |+ {% b- x! \cd /tmp/7 P- {" [2 F0 D y
wget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2
/ c5 v* e4 W k( `/ {" \, Jtar jxvf glibc-2.9.tar.bz2
, j# Z5 j+ i" r2 g5 D7 v( imv glibc-2.9 glibc-cvs-2.9
# ^/ @+ o$ X1 @( @2 t5 Y" k" star zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9; D* S' c' u, Z r; J9 e% o+ e
1 x. [: N6 F# [* N+ S' {/ @% C3 Vwget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2
% I+ C# F. N* D: Utar jxvf glibc-ports-2.9.tar.bz2/ O$ A! _& R; X$ ?
mv glibc-ports-2.9 glibc-ports-cvs-2.9" Z; Y! |- \ t& e
tar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9
( G1 f) E. @7 E5 E9 d2 |' ^ O
+ u7 N) I4 a' q+ N* D' M复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)
; R$ L3 W$ \/ p
+ m' C; b0 @: Q/ m" N* J+ k-------------------------------------------------------------------------------------- 开始编绎(在我的机子上耗时一小时) ct-ng build.4(用太多线程,很耗系统资源) 4.为工具链增加新链接
3 n4 c! q* T' P$ S$ b1 ycd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin ./autoln.sh autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具... 文件名:autoln.sh 拷到要自动建立链接的文件夹使用。 #!/bin/bash
! h1 j( N2 J6 d& C) Q& I% f+ Q* D: D1 K( b9 x* ^) a
#* Q% N: C& R1 n
# main* Z6 T- f" u- u. [/ Z, s
#
: G8 X5 K, g% S# Yif [ $# -lt 1 ] ; then6 U* w1 r2 s- Z4 ~- P H# c/ m
echo "default path: ./"
6 h% E: i. N( S% @) ~1 \BIN_PATH=./
' \. Z& L3 Y8 x' R# z+ H Aelse [' \& L$ M; l8 L3 R( X$ S
BIN_PATH=$1# r4 R/ p7 l* o: Z; N+ }% h d
fi
/ U& t/ x, J( m: o' n* s, Fif [ ! -d $1 ] ; then0 o# e) p5 M6 c
echo "path error"; M* @5 {1 M9 O: ^% j" P
exit6 X0 c) K7 Z4 [* h( Z
fi1 }! {* _$ z0 h9 K$ y
cd $BIN_PATH
! m: W: g4 _6 PSRC=`ls | awk '{print $1}'`4 P, C6 E* d" k( \. f& u
: x$ I* D& P8 M2 ]for i in $SRC ; do
: \) N+ }, H8 B4 b( ]' V( kif [ "$i" != "autoln.sh" ] ; then
J2 O. B6 M6 z/ n#echo $i
# B) r! M; y Z- P4 `TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `. @4 F( `- @7 r) Y
echo $TARGET; a+ B8 o/ P1 o4 h
ln -s $i $TARGET
, k- ]3 S3 d/ o$ y% Y* ?fi3 q4 ?1 Z7 u5 o
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'& i2 R) ]7 R0 \* M
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
3 Z% {! F6 V2 q: _8 g[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'3 Y! a" U$ A$ d$ s
[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'' J2 h6 _2 l1 B0 t
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main', G/ Q: |# l& `( ?0 n& m- Z% t/ _
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
/ s6 ]5 w, V- n/ y5 P# f[ERROR] (elapsed: 33:29.56). Q! ~1 T, M5 q: Q j1 c9 h/ `$ F
[33:30] / make[1]: *** [build] 错误 127+ \+ l4 ]! T/ C9 t
make: *** [build.4] 错误 2 解决: sudo apt-get install cvs 3. [INFO ] Installing C library headers
0 S$ ^! y: b5 C! y[EXTRA] Configuring C library
/ V" h$ m9 T- w C4 O# R p3 @% S# y8 _[EXTRA] Installing C library headers6 H! P9 K0 J: O' v# H9 G# {
[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$ B7 ~3 X6 S( \# d$ B0 P3 k! G
[ERROR] make[2]: *** [install-headers] Error 2
P4 O/ [2 f! l; G[ERROR] Build failed in step 'Installing C library headers'
( r# o, a4 F; E) G u[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)" H a. j, R6 T- i. @
[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'
7 \( u4 W4 N o! ^[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'+ U2 _6 e1 ?, a# T$ {. }# M8 ~9 P
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
! v8 A( x+ T3 s3 `[ERROR] (elapsed: 36:41.91)9 @6 R8 y" |# A" z4 s* F) q4 ~
[36:42] / make[1]: *** [build] 错误 2# ?9 o! T2 j3 Z2 S
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( s/ {: j+ S% L/ d# w
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 [)& V" v1 ?3 S& A; M
[ALL ] /[^4 I; }$ P) g& N0 ]* Z9 K
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]6 }3 ]/ G* c9 y; O) F I
[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 ] =================================================================
1 v5 x5 y3 O3 i( W0 e3 D( {$ K# a[INFO ] Installing C library
, L$ o( H& L' E: C( d8 L[EXTRA] Configuring C library
# p7 Q+ j/ M, M- i f; I; F5 I+ H[WARN ] Removing "-pipe" for use with glibc>=2.6! u% A' w" k1 v7 O* q: K* G0 Y
[EXTRA] Building C library& L' |- W. b1 ?+ Q' J) `
[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2$ I0 |$ n$ T. a; f# @# x
[ERROR] make[3]: *** [elf/subdir_lib] Error 2
9 l: ^+ C7 i& d[ERROR] make[2]: *** [all] Error 2
+ T- V' c! s3 e, b9 _ C[ERROR] Build failed in step 'Installing C library'
0 q" G. j. C+ t, O3 ~[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)4 ]! j: |( G2 ^' h3 h9 J5 v
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'
% F" H" C; o! w, A% u( w[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'1 B; i! E( Y8 Z
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.6 z, z1 Q" n3 l1 @ a
[ERROR] (elapsed: 32:05.76)+ U. f; |' J! E: v8 p$ r* Z3 j5 H* W
[32:06] / make[1]: *** [build] 错误 26 f) w! y; F9 Q: A2 G7 M
make: *** [build.4] 错误 2 解决: sudo apt-get install gawk cd /usr/bin sudo mv mawk mawk.bak sudo ln -s gawk mawk
?9 L+ D/ P7 v# J# L* h5.6 |' g2 |* x `3 Q6 i
49567 [ERROR] configure: error: no termcap library found4 G, a2 H0 X# _" [% G _
49568 [ERROR] make[3]: *** [configure-gdb] Error 14 C: g2 P/ R8 h F
49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross', q" S9 j8 o. M9 P
49570 [ERROR] make[2]: *** [all] Error 2/ M. x- d7 c8 v6 a
49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross') h, t0 d l g( A+ @# E
49572 [ERROR] Build failed in step 'Installing cross-gdb'
! F8 _+ r1 u+ x3 V3 h) ~: h6 L49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)$ N3 @* n( g6 B0 U: O$ r
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'
# A. e2 i/ X4 L( g3 u' q+ p49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'1 j% ~1 s+ y3 o3 g2 K9 b3 B g
49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
2 f3 H9 ?' P" D6 P49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error., x. m' [6 A# Y- Q5 }5 }
49578 [ERROR] (elapsed: 72:30.97)
: b8 f+ x8 d- T/ y+ S: C6 g! n: n/ C$ X
解决:
2 U! I1 x2 t0 C" Z, Y这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)2 ^5 {/ ^ P9 |0 a; N6 O
cd /tmp
, p0 D& k! G4 N- ^; D" R! jwget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
' L# T1 A4 ~7 F3 H8 z# Ntar zxvf termcap-1.3.1.tar.gz% v. |: ]" F" J2 |$ `" B
cd termcap-1.3.1
# e3 j+ o, ?; U* W5 {9 S/ p# ~./configure --prefix=/usr
2 x) ^3 |) E' K& P& r7 Bmake $ c& o* W9 l* `: o1 I
make install
& |0 m; I" ^9 B4 ~6 p' R' o(又需要从头编译工具链了 …… )
3 N* f# |3 R/ N. @" m7 }6 |/ o |