EDA365电子论坛网

标题: DM644x达芬奇平台交叉编译工具链的制作 [打印本页]

作者: ulppknot    时间: 2020-6-18 18:34
标题: DM644x达芬奇平台交叉编译工具链的制作

最近在做davinci平台的系统开发,用的是ti公司的dm6446芯片,这款芯片比较经典所以资料也挺多的,而且ti官方给提供一个dvsdk的软件包,里面包含了包括bootloader、kernel、fs、DSP算法及各种编解码codec,可谓给开发者提供了很多便利。当然里面也包含了arm-linux的交叉编译工具链,但是版本比较旧了,是基于gcc-4.2.0版本的,现在最新的gcc的版本已经到了4.5.1。所以打算更新一下交叉编译工具链的版本,今天要做的这个交叉编译工具链是基于gcc-4.4.3版本的。2 e7 S& e' x5 ]- J  M/ _5 E5 \
" Z0 ^! j* k: e
一、下载crosstool-ng,并为使用安装必要的软件。
+ c3 E! Y! H3 d刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。
6 O( \. O+ _+ e9 x5 R; ?  [0 `3 K6 Q2 U$ {
我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。
% J3 A" l' j- T8 z! K使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。0 D7 W  x2 j: }; _$ ^) a+ Y, d
用指令:sudo apt-get install xxx进行下载安装1 d9 L) L( R% |" r7 m  Y# v
最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。. a! T1 t0 Q$ D( a$ u
二、解压、打补丁(如果有)并建立工作目录。8 o- R7 o. {7 P" P. U
crosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。- U' z7 {& D2 }  n! l* I* H7 T
将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录

三、安装crosstool-ng

$ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录
. J* j7 D' ^/ X$ cd ~/croosstool-ng
: ~7 t2 U) i' b, x3 Q$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中
; O1 V0 N9 e6 S: \& `/ ]0 V2 i$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包( S5 E6 t' Q: l1 y) g4 W1 x& t
$ cd crosstool-ng-1.9.0 # 进入解压目录/ E; G, B$ ^; _( Q% J7 L
$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)
" V1 D- u; }: n) K$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng
  X: q5 K9 h3 Y8 p$ make # 编译crosstool-ng' P. l7 d! t  y  B) C) _$ I( l# E
$ sudo make install # 安装crosstool-ng
; g  J: r* }+ m( U8 @4 l$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量
+ [8 l" {( M" W# o$ source ~/.bashrc
7 I6 c. y, Q, f0 G6 t$ ct-ng help 出现帮助信息表明安装成功了

四、配置交叉编译工具链

$ cd ~/croosstool-ng
' j8 C, k" v3 ], ?; t$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录' f9 s/ W! _- S  ^* n5 |
$ mkdir src # 建立保存源码包目录" h& U. P$ U& z+ K. @& D
$ mkdir x-tools # 建立交叉编译器的安装路径5 Z4 v; D: o! p: e, t% k
$ cd crosstool-ng-1.8.1_build/
& X" \- t. g; J! D$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项
1 ^  z7 T6 A& J4 @PS:为加快速度,根据配置自行下载相应的软件包。(选做)" t  k1 C2 O1 Z; q. u& u! u
虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:
) A4 G) i' \  Y' a. J" qbinutils-2.20.1.tar.bz2
+ D. c. B$ S6 j' w, e" mglibc-2.9.tar.gz
8 u  y; K, g/ [$ d2 T4 kdmalloc-5.5.2.tgz
% i! w# @4 ~1 ^glibc-ports-2.9.tar.bz2% v3 F, X9 j  u* z  _  b, n, P( b
mpfr-2.4.2.tar.bz29 {) |, y+ g) N8 t6 S! q
duma_2_5_15.tar.gz
5 q/ X* Z4 s& i3 [/ G8 ogmp-4.3.2.tar.bz2; r+ |3 `: m' m5 H  q1 i& b
ncurses-5.7.tar.gz
1 f0 [/ h4 U, n$ c$ X. f8 \8 gecj-latest.jar( f. J6 q+ J8 ]3 m% F" a
libelf-0.8.13.tar.gz# m# z* P( `! \% @1 F' b6 @$ |% O
sstrip.c
0 `8 y* r6 |$ W& v" @gcc-4.4.3.tar.bz2
1 y9 {0 ]5 e3 Z" nlinux-2.6.33.7.tar.bz2
' B* C8 i- i( P6 }2 q6 u- mstrace-4.5.19.tar.bz2
' U8 B  K/ A8 @! o1 Ygdb-6.8.tar.bz23 _* q9 a# ?  ?  d4 N, I1 z
ltrace_0.5.3.orig.tar.gz* H; r$ y, e2 c
% I$ o! s9 z" Z0 J: l/ ?
下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下): {4 i3 _; v6 G/ ^+ d; N
以上工作都完成以后,咱们就要开始真正的配置工作了。
: S. V1 n- H" V, {2 B/ l  n首先用终端进入到crosstool-ng-1.8.1_build/目录下。
& c( ^# J. @: G: {1 z然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。
) u5 M, U% P: @" D1、已下载好的源码包路径和交叉编译器的安装路径。- `  s7 Y7 W% ~$ B7 n
Paths and misc options --->
4 Z" U& K$ o' l- K5 ^(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径% c; {( p% v+ n8 H! h
(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径' m" n4 x9 ^( ^- K8 L
以上根据自己的路径自行修改
/ U" g* B* w- l% T( w) f! Z2、修改交叉编译器针对的构架% q2 U$ ^* o  W, i5 j; T* M- c
Target options --->
  S) |5 n; M9 ~; q1 w: d. S由于咱们是copy的默认的davinci的配置文件,所以这项不用修改. v" N9 U5 b: Q) V7 f
3、增加编译时的并行进程数,以增加运行效率,加快编译。6 L) G5 a. x! d  q8 k# |  z
Paths and misc options --->
' d; D3 O6 q2 a  N" d*** Build behavior ***
3 w' c; z9 W. R4 X5 X/ Q8 _(4) Number of parallel jobs5 Y/ e5 a& @1 ^: z3 |- S
这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了48 f' o4 {4 Q* E, _
4、选择gcc版本号
# ?, k* Q( |2 N1 M% A: d9 Z6 `' pC compiler --->9 b+ R% @* |' B! H. }
gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3
2 f& L0 `- R* Z" j6 C5、其他工具包版本选择$ }3 W. f+ C; R; B: u7 A2 P: b' B8 ]+ @
Operating System --->4 R' x4 Q. z+ M- R: h8 G
Linux kernel version---> 内核版本
- d  ^) ?$ p+ \6 I* ~$ sBinary utilities --->
! w9 d  l# a( ~% c" w  Cbinutils version---> binutils包
# P& ^& `0 p  OC-library--->: ?9 R9 f. ?6 U  p% A$ j% [  A
glibc version ---> c库
; X1 R; T4 Z) YCompanion libraries--->
. u/ I) U: f6 AGMP、MPFR、PPL、CLooG/ppl等版本的选择
! e  e' o( @" f1 y9 y3 u- X6、修改操作系统选项,禁止内核头文件检测2 ^5 u) ~3 y! l% B
Operating System --->

[ ] Check installed headers
0 E1 G2 C9 E# |0 m7 p) c另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误
$ m9 f3 R& }% i! P[ERROR] Build failed in step 'Installing CLooG/ppl'8 q" g  X  {; F( m) ^: |' x3 @, x( }
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)) }! q! ]2 _0 Q. {6 }2 R8 b8 O3 y3 }
解决方法:选择CLooG/ppl 0.15.9就可以了。

五、编译工具链

配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?
- _2 Y1 R2 Z# U1 \编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。# s  k8 I+ O* U
最后测试一下工具链版本:
: D6 ^  }* Z5 k. T% ]#arm-davinci-linux-gnueabi-gcc -v
. u6 r3 o  }* P, [6 m% Y: m#Using built-in specs.7 \1 d/ m6 [$ n5 h* l3 h
Target: arm-davinci-linux-gnueabi
; U, D$ @- m3 w+ sConfigured 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' j5 ^2 u( I% P( ]3 g
Thread model: posix7 ~( f9 c! R- N: G
gcc version 4.4.3 (crosstool-NG-1.9.0)

- B( s2 l  C0 c1 Z& m6 N; @

crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
) r. q8 X: a! G  X! l使用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 */* w! n, h' {* F$ `# P: ?+ n
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
8 _9 `" e- [6 l0 f8 T# error Your version of gcc miscompiles the __weak directive* C8 q. `+ f7 Z1 Q/ {4 I
#endif

所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎.

' v. V, s& Q& T( }: W/ e  `

测试环境:

Debian Linux 2.6.18-6-6861 `* Y3 {: A8 M8 m. r2 K4 V
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
" k& ]1 W/ V# E; N" B2 N/ [; f, h
& C/ r* o; T# K; \$ c" \: N9 TUbuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. .

3.crosstool-ng使用范例

本范例记录了使用crosstool-ng编绎arm-unknown-linux-gnueabi工具链的过程

cd /tmp/crosstool-ng

mkdir build_toolchain

: n/ K" L* n" |# I% R3 Z- f( E$ f

mkdir ~/src
" U8 F! ]6 d/ T; c! k; d生成默认配置文件:

ct-ng arm-unknown-linux-gnueabi
' z" Q2 b' S7 O也可以这样子:
7 c7 f' u  A% T& _4 `- Jcp /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 s( r4 ?$ w5 ~; `+ K0 L
vim .config

修改kernel的安装版本

CT_KERNEL_VERSION="2.6.18"

修改libc中配置的内核头文件的安装版本至2.6.18

CT_LIBC_GLIBC_MIN_KERNEL="2.6.18"

保存退出(注意若使用ct-ng menuconfig进行配置,上面的手动修改信息会丢失,需再次从头配置)


1 W  N* v1 d& x4 h, OPS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件+ Y+ _  n& E  l
' h& n1 Q6 E8 h: ~# g
7 m" f0 O( p* n. o( p9 M' \
-----------我是分隔线 2010快乐 -----------------------------------
. [# L, c$ [% l6 q3 p6 R; F3 Z, \* `2 K! j* A
libc库已经换用git来管理源码(sources.redhat.com),下面两个包1 l3 f+ A; }5 H/ L0 R; a  Q3 d
glibc-cvs-2.9.tar.gz2 C( y' W8 Z# T; j/ ~  j+ h' _& S
glibc-ports-cvs-2.9.tar.gz
" V" C4 X% h" Z0 }+ A' X1 m将无法从cvs中取出,临时可以这样子解决:
& l, j! @1 I$ E' I' R/ m. F0 u6 G4 mcd /tmp/
  Q% {* ~% T9 n" c3 V' h1 wwget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2! M0 |2 _3 |$ }: D/ \7 r
tar jxvf glibc-2.9.tar.bz2
: p# S  W' h3 F2 Dmv glibc-2.9 glibc-cvs-2.9
+ {5 }- e9 g; {- utar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9. u, a' L8 ^2 p

8 W) Q; b) J3 b& U4 a+ jwget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2
  w7 n# F/ m4 D' {7 ~4 ^tar jxvf glibc-ports-2.9.tar.bz2$ E" H9 O4 K  D. b
mv glibc-ports-2.9 glibc-ports-cvs-2.9) U" T7 p, k4 d5 U: [' r
tar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9
! |4 i3 R; [. m# ^) O0 ~5 c3 p9 w. g
复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)' h  R6 C( g& X% f( ?
+ D- Y4 w7 S) X# @- `6 O* J. `
--------------------------------------------------------------------------------------

开始编绎(在我的机子上耗时一小时)

ct-ng build.4(用太多线程,很耗系统资源)

4.为工具链增加新链接


! C' ~# ?6 F7 p) w: I

cd /opt/arm/4.3.2/arm-unknown-linux-gnueabi/bin

./autoln.sh

autoln.sh是一个脚本,用来自动链接arm-unknown-linux-gnueabi的工具...

文件名:autoln.sh 拷到要自动建立链接的文件夹使用。

#!/bin/bash0 T: Z" q; i  m! M# o1 {6 T

/ b% a' b1 z6 \* W#
/ R. z$ W# V, s# main
1 ]0 X' c" P/ U" [#
" y1 c) p* w+ v3 V: gif [ $# -lt 1 ] ; then
' E! U0 ^# }2 q  Y5 D; W  d. {$ W* ?echo "default path: ./"
) r7 K# D  t7 o# k2 |BIN_PATH=./
4 m4 T( t4 ~1 l& S( [9 b3 [else
; D  @& ~4 t, e$ eBIN_PATH=$1
0 B( K: o+ Y$ B- k5 zfi1 n/ `, I2 O8 u6 z# \0 c. a
if [ ! -d $1 ] ; then
$ c- u) |1 b! }7 W3 U' x/ M% Fecho "path error"3 E( ?8 L# Z7 I7 G; u+ k
exit
5 J8 K6 U, `. n$ }2 z6 ^fi
/ a& a2 w1 f" R" ocd $BIN_PATH- V# {. b& b4 @; N" Y, h
SRC=`ls | awk '{print $1}'`* D; K% d: L" \' n9 y: f1 n, ^0 t

; N/ a7 D8 q5 Z% V* }3 p" ~for i in $SRC ; do
5 z* i7 _/ ]! X7 k. W0 E8 wif [ "$i" != "autoln.sh" ] ; then
% C( y# d9 n# V. {#echo $i9 K! l8 \& |# k8 w6 y
TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `' G4 c1 ]! g, v7 {2 F
echo $TARGET
6 ?4 v/ B  U0 M- v6 o* f' nln -s $i $TARGET
9 j2 }( L' s# {fi$ \( \" _, d/ a) T7 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'/ o' [9 ?- N& {4 ^( c( B
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)1 N7 ]+ E# g: Y" e
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'* y5 w2 U" `: }$ |& l, |0 A
[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: K8 k, p2 G( v" g" @
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'6 G" w* V% N* K2 O) O0 Z4 ]. A
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.- C- c5 N6 V; V+ `" i, d- ^, y
[ERROR] (elapsed: 33:29.56)
# \* ?& |+ v! b[33:30] / make[1]: *** [build] 错误 127: n0 j  D5 O2 p: B" P. U
make: *** [build.4] 错误 2

解决: sudo apt-get install cvs

3.

[INFO ] Installing C library headers
- f/ d. A; y2 X9 o% C0 g1 v2 R[EXTRA] Configuring C library
% ]) d4 ]" J# U0 l[EXTRA] Installing C library headers. Z* {- \8 C9 ~; ?# n' @
[ERROR] make[3]: *** [/home/star/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi//sys-root/usr/include/gnu/lib-names.h] Error 13 y4 Q  M; K- v* Y* E8 N9 q
[ERROR] make[2]: *** [install-headers] Error 2
% h- N( @  `- |0 t" }4 p3 c% k[ERROR] Build failed in step 'Installing C library headers'6 g3 z0 P4 K! z* A
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)' Z. y2 C$ \9 P, R7 V& r9 H7 Z
[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'  S. p' R. G$ r5 p
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
/ v# y1 b& @1 F[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
( h: u% i% W4 @[ERROR] (elapsed: 36:41.91)
# W* t4 q, L( {8 H[36:42] / make[1]: *** [build] 错误 2
  }3 `8 G* ^1 z' bmake: *** [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( i4 E9 v  D. C' l$ L
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 [)2 Z# b0 W2 H9 \8 J6 U" ^
[ALL ] /[^, \  j- X5 m0 R/ G, e& N  K- {; O
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
3 N+ [" c5 d% Z. X& D' W[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 ] =================================================================
% n* L2 i3 N& P[INFO ] Installing C library
1 S% |3 |5 j) b" P: R[EXTRA] Configuring C library' y5 q2 E& d9 A/ N9 H, m
[WARN ] Removing "-pipe" for use with glibc>=2.6/ y: X3 W1 U, I8 i2 X* \6 q
[EXTRA] Building C library
4 n* B, h" ~) L3 @[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
9 [! {- l) ], Q" U4 i[ERROR] make[3]: *** [elf/subdir_lib] Error 2
! O& O  w& [+ J[ERROR] make[2]: *** [all] Error 27 L: t; R/ a% }  q
[ERROR] Build failed in step 'Installing C library'
5 K; A; }$ ^* h3 z: u8 r[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)$ m/ }; C7 m+ m* F4 b; K
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'( C- i- c6 ?# G7 h6 [! i& \9 X3 H
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
, m1 ]6 J( H& M9 @  `- _" ?[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
9 c. q) @, p; f# j[ERROR] (elapsed: 32:05.76)
/ Z+ q# p1 w! t8 E" C9 l[32:06] / make[1]: *** [build] 错误 2
/ P; M6 T' I6 s1 q+ Rmake: *** [build.4] 错误 2

解决:

sudo apt-get install gawk

cd /usr/bin

sudo mv mawk mawk.bak

sudo ln -s gawk mawk# w  x1 Z: K1 ?$ O, W
5.
! M9 ]  W& l; F5 h* d49567 [ERROR] configure: error: no termcap library found$ D) ?( n8 e8 j
49568 [ERROR] make[3]: *** [configure-gdb] Error 1
- e& G, b* \8 ]) c+ ^49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
- r9 a: C% g0 k: l: Q+ J1 s49570 [ERROR] make[2]: *** [all] Error 2
3 n7 c( H/ [' O49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'9 d( q6 p' p" M) a% a2 s
49572 [ERROR] Build failed in step 'Installing cross-gdb'
! `7 d8 d( _  k! C: s# j49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
* |3 b7 \3 L; ^3 y6 Z: ], a( n49574 [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'
7 A9 n5 H- x9 a" `2 }49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'1 f+ Z- X: g. ^" X
49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'% K4 ^/ W3 ~: A& `- q
49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.* Z- F( s/ ~+ V9 E5 Y
49578 [ERROR] (elapsed: 72:30.97)
  A/ D1 \. G7 n9 X7 D6 s1 g
9 L# I" }2 b. I& m$ T( {6 w+ c7 G- \" ^解决:
3 t* `6 `( u% W8 Q7 Z' a这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)1 O" D1 |+ U# o% i5 e
cd /tmp  Y3 u1 R" u3 b- G  I; J
wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz0 ^/ R( F% ~3 c
tar zxvf termcap-1.3.1.tar.gz
# n- ?$ e* |2 {  |* R/ z# P6 i: r/ Icd termcap-1.3.1" A0 \0 i( W' b: l; v
./configure --prefix=/usr9 ]8 V: h  n! z8 b9 w% l
make
: M$ N5 [( }$ g* N9 X! V. w) {make install4 d' W& K+ S) V2 D/ e
(又需要从头编译工具链了 …… )


* R* w! t$ L6 \/ a! d1 A
作者: ExxNEN    时间: 2020-6-18 19:35
M644x达芬奇平台交叉编译工具链的制作




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2