找回密码
 注册
关于网站域名变更的通知
查看: 283|回复: 1
打印 上一主题 下一主题

DM644x达芬奇平台交叉编译工具链的制作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-18 18:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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版本的。7 \4 n2 {# B3 j7 Q# K

( l" g3 g9 i( k. b一、下载crosstool-ng,并为使用安装必要的软件。+ A* n5 s5 p* @3 A5 p1 W  }
刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。
' f$ o1 ~" e3 W8 _7 x1 ]. V
4 \+ X' A+ s: R# p我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。
- x  L* q4 C0 o  x使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。
4 `0 b& H* c$ m+ y1 J用指令:sudo apt-get install xxx进行下载安装( S, S! }$ Y" L0 y- ?
最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。
& _: ]7 |4 b/ i4 m/ H2 ]2 v; K& o二、解压、打补丁(如果有)并建立工作目录。
. L2 G% d# _0 W+ z' ^crosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。
- u7 c8 l& l8 G0 H$ F) w! ^) E# c" x' y将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录

三、安装crosstool-ng

$ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录
" ~+ q4 V  {% D2 M! m* v$ cd ~/croosstool-ng0 I" s# f2 L! m# a# J) ?6 S
$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中
+ Q/ l, A! s5 q/ S$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包9 I- t2 s, A+ D0 m- S
$ cd crosstool-ng-1.9.0 # 进入解压目录
! f* |9 T$ h1 q( @$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)
9 e$ z/ P/ Q' e$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng1 n$ @0 a9 U2 c
$ make # 编译crosstool-ng0 A6 I: h8 m9 w0 ?' o$ a% I4 l
$ sudo make install # 安装crosstool-ng) t: ~5 ?! D$ p; u% m
$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量
7 R: S0 Y) I5 W$ source ~/.bashrc2 g* N! u* e5 x: \. r
$ ct-ng help 出现帮助信息表明安装成功了

四、配置交叉编译工具链

$ cd ~/croosstool-ng
& p6 ^' U2 o; @7 f3 r7 }/ f2 X$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录! m$ l% ]. R* h, j: w/ x3 M. R
$ mkdir src # 建立保存源码包目录
! e4 ]3 I  W! o# K, e  F$ mkdir x-tools # 建立交叉编译器的安装路径
0 Y, _5 ~6 r; n( w/ E& M: |$ cd crosstool-ng-1.8.1_build/
6 T( h. {3 p  N0 y4 ]+ H$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项
8 T/ {" C  g& X' X- HPS:为加快速度,根据配置自行下载相应的软件包。(选做)
' N( D: o" W4 K/ {6 O! _虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:* `  E0 ?! Y) U/ Y3 S$ l$ u
binutils-2.20.1.tar.bz2) |) Q( u3 A: }2 }, ^
glibc-2.9.tar.gz
1 i) _  t1 _  m/ h. M! M; Rdmalloc-5.5.2.tgz: s4 Y! i, p, Y0 K$ F
glibc-ports-2.9.tar.bz2
& H% H( v# C( K# `mpfr-2.4.2.tar.bz2; O4 n/ h7 K0 p. K" M" v6 R1 y* Z
duma_2_5_15.tar.gz
! w- ?7 F. o1 K  I: Z% p* fgmp-4.3.2.tar.bz2
1 R# B8 U. K3 j9 G8 Qncurses-5.7.tar.gz0 E4 B9 J/ p( U5 p- N' G
ecj-latest.jar
# w) q; P9 T) ~3 N( J2 d/ X- ilibelf-0.8.13.tar.gz; j" G1 X- w+ y8 V) }  z, x
sstrip.c, E5 C7 \7 d9 O2 Y) o! c2 b
gcc-4.4.3.tar.bz21 W9 \3 Q9 x# ?8 {: q0 T
linux-2.6.33.7.tar.bz2
% s7 X# R8 w1 H" `+ _4 r/ F; l4 gstrace-4.5.19.tar.bz2
6 q1 e: e, Z3 Ugdb-6.8.tar.bz2
6 W% k- ]8 D4 [. U& I, i* Z) [ltrace_0.5.3.orig.tar.gz8 p4 W/ N6 J8 _! m

2 F' {4 O  F/ v8 M5 ~下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下)( j% w2 R8 V  R! g+ q
以上工作都完成以后,咱们就要开始真正的配置工作了。+ b7 f1 x) U) F. e6 U3 M
首先用终端进入到crosstool-ng-1.8.1_build/目录下。* e8 _# L5 [; E
然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。
1 V+ G& b+ e/ r6 t  y& M* x, ]/ A1、已下载好的源码包路径和交叉编译器的安装路径。
8 X: j# A: a4 ~# a, a. L6 U8 CPaths and misc options --->
9 X/ |5 Y& P! `3 x  m" l(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径  G( X4 m( q* B
(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径
( I3 T4 |, m1 x3 g3 S2 P以上根据自己的路径自行修改
9 V8 j. C9 V5 _4 D. R. T2、修改交叉编译器针对的构架, f/ ?4 d) H! d* ]/ u
Target options --->
; O, p3 }- W: i由于咱们是copy的默认的davinci的配置文件,所以这项不用修改
, v6 r; {+ {" H7 O* u+ l/ m3、增加编译时的并行进程数,以增加运行效率,加快编译。6 F4 }8 a& z4 }9 z, F
Paths and misc options --->/ _& Z# _% W$ A1 F4 C% h% \
*** Build behavior ***
- q/ E$ r, p2 H' b(4) Number of parallel jobs
4 [' k/ }% P5 R, T这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4. p3 H$ n, l$ y' W' [
4、选择gcc版本号" x1 i2 z. E- M6 I2 A# Q( o! o( _: V8 ^
C compiler --->
& b' p2 g0 Y$ |  Jgcc version (xxx)---> //选择咱们需要编译的gcc 4.4.3% j- R, v# d. @0 \. B1 j/ J
5、其他工具包版本选择
' P( m* E0 |5 T: R1 sOperating System --->
/ m+ w) V5 J7 M: YLinux kernel version---> 内核版本% D# m$ E9 p8 ~/ y, U# i: d' t+ e
Binary utilities --->1 D3 v2 p9 m  G% T6 D# E% {
binutils version---> binutils包. |  A9 P; p+ k( {% E- Z) S. Y
C-library--->6 L4 ~/ ^- d* c5 l/ [* A
glibc version ---> c库( z8 l1 Q0 M8 e- b- P* Z" Y6 U* o9 b
Companion libraries--->( A: r+ O/ R  I, v% G' Q! t$ u0 Y$ ?
GMP、MPFR、PPL、CLooG/ppl等版本的选择) o4 r% r* C% G. c
6、修改操作系统选项,禁止内核头文件检测
' V  B- ?7 X, t/ }Operating System --->

[ ] Check installed headers6 Q) O* [3 n' a) w; R# j
另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误% h/ ^! Q3 ]( w
[ERROR] Build failed in step 'Installing CLooG/ppl'; G/ b/ E1 m. X. i
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)+ g0 P1 j; z, C% w
解决方法:选择CLooG/ppl 0.15.9就可以了。

五、编译工具链

配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?
. ^" ?, ~; P! c8 d( l编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。
$ d, H( g) s8 d4 t& r- p$ e最后测试一下工具链版本:
7 y. ~) w7 t% v9 D3 t#arm-davinci-linux-gnueabi-gcc -v
; E  X. ?% [  c" Y4 j1 P#Using built-in specs.% y+ }3 s1 n. Y5 R
Target: arm-davinci-linux-gnueabi
8 `4 |" X8 U" |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* A6 w) f4 k. ?3 w# P
Thread model: posix; e* {* q, R" m( o, A  L
gcc version 4.4.3 (crosstool-NG-1.9.0)

: \* y9 v" ?0 b) F! n( H9 V1 }' D

crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.2 b- P" p; e* z- W1 l) S
使用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 */+ v* _" C$ ?- g9 T0 L( }
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1* r2 i" F7 S" n- e" f
# error Your version of gcc miscompiles the __weak directive- G$ z" b% w2 |( x/ Y
#endif

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


9 \7 Q+ R/ E" W& w% ^! g

测试环境:

Debian Linux 2.6.18-6-6866 m. }/ {3 u' t3 N
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( A4 p6 F4 t# k% v3 @% E( c

/ {, W3 N4 _1 e$ r; jUbuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. .

3.crosstool-ng使用范例

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

cd /tmp/crosstool-ng

mkdir build_toolchain


3 f( B3 N- n9 T: K- L  i$ u

mkdir ~/src; q* u* y7 K4 M6 k3 D/ y+ ~
生成默认配置文件:

ct-ng arm-unknown-linux-gnueabi
; _/ ~$ Y7 k$ Q% J1 v也可以这样子:
6 Q1 N+ x; D+ K3 xcp /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 W- k2 B9 _; S
vim .config

修改kernel的安装版本

CT_KERNEL_VERSION="2.6.18"

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

CT_LIBC_GLIBC_MIN_KERNEL="2.6.18"

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


5 [, X% n# x2 K5 Y2 yPS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件
5 g" h' G( v2 L
$ o! V$ D% n9 N( Q* I4 b. H3 u4 v
, B) b* A2 B0 o) ]-----------我是分隔线 2010快乐 -----------------------------------
' @9 ^. z9 E+ Y* R" q6 l
! t  R4 P$ e* V* ulibc库已经换用git来管理源码(sources.redhat.com),下面两个包
$ M3 M; p" H5 J: G  ~% ^- Gglibc-cvs-2.9.tar.gz
$ u/ Y) S8 V- }8 |glibc-ports-cvs-2.9.tar.gz
, [2 f: E- |9 z7 p- h  ?将无法从cvs中取出,临时可以这样子解决:1 f8 _( R* e; d% k2 G' v0 W5 g- a
cd /tmp/2 ]2 N) J( @" t4 H; `% Y9 q! w
wget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz2+ Z7 e) s, F# P  a9 ~: ?5 l
tar jxvf glibc-2.9.tar.bz2
& d$ P: i/ ^* ]mv glibc-2.9 glibc-cvs-2.9
- j3 M& q) G" D: f( ttar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9
* C; J9 v& D! U- L$ _
% s! y- m: h3 |1 Ewget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz2: R5 K) V1 `0 d
tar jxvf glibc-ports-2.9.tar.bz2
2 O2 u5 n7 k$ P6 @1 pmv glibc-ports-2.9 glibc-ports-cvs-2.9
' U4 S" {: @/ W0 Dtar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9* k* @! X. w) A8 a  \0 M. P  `8 Q

% S" `# ]( \, L8 t复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)
& Z* h- A5 u& K& T8 V. W# l
4 a  T+ F& y; l; t--------------------------------------------------------------------------------------

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

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

4.为工具链增加新链接

0 s# Z8 s7 r- ]- A0 R

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

./autoln.sh

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

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

#!/bin/bash
% A, w' ~8 f- S; ]$ f: b+ J
$ R* {7 I) z6 |#
* m  g/ r1 n! r8 g- s: ?# main
1 [1 A8 @4 }8 o% P* g#
# x1 ]2 F9 ]( qif [ $# -lt 1 ] ; then* l5 A. S2 J% C9 T) ]! a
echo "default path: ./"4 f* T. u) ^$ P! r/ K
BIN_PATH=./
. c6 k; X% h0 {8 p! n" Zelse# Y5 Q, \* T& X2 X4 [- O# {% U0 _# \2 ]
BIN_PATH=$1
$ y8 v6 @4 e4 Q' ]; \8 ?  x1 \fi
# C; @; F# N; Q; Fif [ ! -d $1 ] ; then* O% ?/ H( e/ t3 F( ~! k0 I
echo "path error"
- v1 w: \  k4 l5 S8 Y8 w# Eexit5 Q  _" ?# }5 a$ M& B5 I( T
fi
! F5 s( _/ V. N  f1 g% q% rcd $BIN_PATH1 A1 f( u8 q, v
SRC=`ls | awk '{print $1}'`* V) q/ B5 ^, |# V2 @1 c
; |6 n* v. L2 u+ ?! g1 a& P0 l
for i in $SRC ; do; L! O4 A6 I; G$ Q: f, \' E* C) q) q
if [ "$i" != "autoln.sh" ] ; then, R% o0 g5 u  c9 o$ r2 y9 P
#echo $i' m) {: u4 O4 P% m3 x9 M
TARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `
: {4 S6 f* ]+ N4 L; P$ techo $TARGET
% l, N) _9 I. W" ~( y3 Mln -s $i $TARGET5 d2 f' L3 A0 P1 O/ ^" s
fi: O1 B. z- M4 ~1 f8 {9 b, M
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'
3 {* V, e& e  w& {% D" Y- u[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
/ G7 W( H" d+ n[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'8 |& D+ F; B# C1 {) }
[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'& L0 m# |3 R* F* [! ?& ^
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
, _+ ~- z$ g$ Y. A0 w5 ~/ _2 F" X[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
6 m. `- f/ d$ k7 _[ERROR] (elapsed: 33:29.56)
1 D5 r; D) e3 h, a5 ][33:30] / make[1]: *** [build] 错误 127" I/ \' b- ^) W1 C' _
make: *** [build.4] 错误 2

解决: sudo apt-get install cvs

3.

[INFO ] Installing C library headers  B! _: d4 r# [$ ^0 j! W3 c
[EXTRA] Configuring C library- B2 k) q# P5 A" }+ q: ]
[EXTRA] Installing C library headers
8 |5 Q+ M  k. E+ v- A+ A/ R& Q[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: N5 d3 s$ ?, z- f) u
[ERROR] make[2]: *** [install-headers] Error 2
; `! `( f' L9 z/ d- Y- u! W[ERROR] Build failed in step 'Installing C library headers'1 I, W% W, G. M7 H
[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)0 m+ C( P& [8 F5 {2 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'5 N" ^9 i% x: @. v
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
2 j3 C1 B5 E  H: I' n( X[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.2 E% n# n3 R' w
[ERROR] (elapsed: 36:41.91)* a* F/ K1 h( H+ b  D) _
[36:42] / make[1]: *** [build] 错误 2
. t5 l7 D  @+ j; u# Ymake: *** [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: X9 S6 G3 m1 W5 |* ^2 o
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 [)
' e, i- ~  N6 I) T0 ][ALL ] /[^( B  p8 t" X* I4 S8 o
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]% `7 P# _' z$ H) 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 ] =================================================================
* ]: Z' L' G7 D4 T. w4 F[INFO ] Installing C library' m$ U3 Y4 O$ X& `
[EXTRA] Configuring C library8 \. k) Q) _) o1 X$ c7 `: d
[WARN ] Removing "-pipe" for use with glibc>=2.6
& I4 T+ e: p) S0 V  G1 q[EXTRA] Building C library
4 u. q" F3 e) ^7 a6 Y( S/ C* G6 a3 M[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 29 o9 v) Z; @. d* b
[ERROR] make[3]: *** [elf/subdir_lib] Error 2
8 u' S& e0 T0 p! P" I[ERROR] make[2]: *** [all] Error 2
/ |6 c/ R$ D. v- v$ ?+ a[ERROR] Build failed in step 'Installing C library'
. r; a0 Z0 n) D9 T  `. z[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
  C" ?8 x6 ^; L1 k1 a) z[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'/ G* a3 b( q* ]% B! ^1 N0 b0 h6 z
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main': d' w/ R7 E5 g
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.& K4 u# _* S7 Z0 ~( t/ P6 l4 O
[ERROR] (elapsed: 32:05.76); I4 P% `1 |9 p( h# M
[32:06] / make[1]: *** [build] 错误 2
- F" R7 `4 f& V0 H* Dmake: *** [build.4] 错误 2

解决:

sudo apt-get install gawk

cd /usr/bin

sudo mv mawk mawk.bak

sudo ln -s gawk mawk& L! p. {" p' v7 V8 U! ^# w& d
5.
( W; f  u) R8 q' X  @49567 [ERROR] configure: error: no termcap library found6 G; D- q) m+ |4 q$ J: _) i" i
49568 [ERROR] make[3]: *** [configure-gdb] Error 1
+ V& H0 k& T3 C3 V  F" M; @49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
0 H( A- u/ s5 n, d; c% M. x7 ]3 l49570 [ERROR] make[2]: *** [all] Error 2
, F! W0 Y2 i9 |; G$ A2 d: t5 f2 E6 ~49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'* J% z2 j1 |8 F
49572 [ERROR] Build failed in step 'Installing cross-gdb'
( I5 S: r4 v" f! r( j49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)6 @6 y" v* z6 T! D
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'" @$ G) G$ e- f& H
49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'
+ u1 S! W8 q6 _. _: [! g49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
& P, k: M& N8 N4 n; |8 {2 Q49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.# d1 ~0 Z' P+ b* @8 [* d$ n
49578 [ERROR] (elapsed: 72:30.97)
' N- q0 ^  K* }/ U- ^9 ^2 q3 @" b& w0 g
解决:2 X0 C0 Z; R9 `! ^+ A
这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)7 G/ E- o9 N! T5 S. P* W
cd /tmp
* q' k- G1 @6 z0 Xwget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz) P4 \4 [% P* \8 Z! T3 \
tar zxvf termcap-1.3.1.tar.gz! v* h, e3 o! M! ~
cd termcap-1.3.1
, C' m8 B0 u+ i+ |# ^- I) S./configure --prefix=/usr
% s& ~! }8 R8 F3 y7 }make
' S# @; E  O9 q/ `- ]( emake install8 I0 H  m: {' M& m5 p
(又需要从头编译工具链了 …… )

3 I* s8 \3 V* \$ O" L4 U

该用户从未签到

2#
发表于 2020-6-18 19:35 | 只看该作者
M644x达芬奇平台交叉编译工具链的制作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 17:54 , Processed in 0.171875 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表