找回密码
 注册
关于网站域名变更的通知
查看: 258|回复: 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版本的。, G# s# q! J9 I0 M9 ]# p: A. ]
/ |, ~1 Y/ o0 f) p$ f
一、下载crosstool-ng,并为使用安装必要的软件。
$ G8 C8 O3 ~# ]3 R$ p刚开始选者的工具是crosstool,但是后来发现它支持的gcc的版本太低了,所以就选择了crosstool-ng工具。# |% s: l3 S' e4 N1 c7 i. l
2 H+ v) J* J. Y7 u* ~
我使用的是crosstool-ng-1.9.0版本。用的是ubuntu9.04的平台。
6 k* j# a, m: A4 i& k9 F1 y! Z使用crosstool-ng必须依赖一些开发用的软件包:libncurses5-dev、bison、flex、texinfo、automake、libtool、patch、gcj、cvs、cvsd、gawk。1 h9 r; S0 y, H6 M6 _" z/ E
用指令:sudo apt-get install xxx进行下载安装
/ b, L) ]" i- f9 ]1 O最后根据用crosstool-ng建立arm-linux交叉工具链的介绍,最好手动安装一下termcap。
/ e9 l! |; X/ d, g: L* O6 o二、解压、打补丁(如果有)并建立工作目录。
0 ?/ ]* |' t) Icrosstool-ng和crosstool不同的地方之一就是:她并不是一下载下来就可以使用了,必须先配置安装。" U' n/ I4 J$ q; |; U% M
将下载下来的crosstool-ng-X.Y.Z.tar.bz2解压到你为她准备的工作目录(这里假设为${CROSSTOOLNG}),并建立安装和编译目录

三、安装crosstool-ng

$ mkdir ~/croosstool-ng # 在当前用户目录下建立croosstool-ng目录
9 W( T1 G$ O3 {) ]# A- `$ cd ~/croosstool-ng
& s+ C! \8 d) c! n2 P# v& ^$ mv /tmp/crosstool-ng-1.9.0.tar.bz2 ./ # 把下载的crosstool-ng软件包放到 crosstool-ng目录中6 m. t9 a3 C2 r" j  {: k
$ tar -jxvf crosstool-ng-1.9.0.tar.bz2 # 解包
3 m4 m5 P; q! k- y; g- N& I$ cd crosstool-ng-1.9.0 # 进入解压目录
/ B, D6 \- Z- C3 P$ patch -p1 < <补丁文件>#给crosstool-ng打补丁(如果有)
; l5 u0 u' ^6 v' D# r$ ./configure --prefix=/opt/crosstool-ng # 配置crosstool-ng" h& T: L$ i0 I$ t% h, u
$ make # 编译crosstool-ng/ A! Q1 t& U3 E( o3 G& |" p
$ sudo make install # 安装crosstool-ng$ |( r% o5 j" B% |' o$ o. @7 n
$ echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc # 为后面调用ct-ng命令增加环境变量+ r, ?& }" G' b, m, ?
$ source ~/.bashrc: Z+ G7 _! o  a& w/ t
$ ct-ng help 出现帮助信息表明安装成功了

四、配置交叉编译工具链

$ cd ~/croosstool-ng
. G. ]; I: s  \1 j2 |' W3 _, ~$ mkdir crosstool-ng-1.8.1_build # 建立一个交叉工具链的输出目录  F, C5 h( G; q1 q
$ mkdir src # 建立保存源码包目录' J  e& D# T9 j, Z- p
$ mkdir x-tools # 建立交叉编译器的安装路径
( m0 f: @" v! M4 K! v' }: k$ cd crosstool-ng-1.8.1_build/1 _+ Q$ }) T( J: O; P8 H
$ cp /opt/crosstool-ng/lib/ct-ng-1.8.1/samples/arm-davinci-linux-gnueabi/crosstool.config .config#拷贝davinci平台的默认配置选项
5 ?! A/ Y9 I. ZPS:为加快速度,根据配置自行下载相应的软件包。(选做)
$ c3 N4 }' M' W虽然crosstool-ng发现找不到软件包的时候会自动下载,但是比较慢。根据这次的配置情况(查看“.config”文件),我预先下载了以下的软件包:
# i4 T3 c" @  }& V+ Lbinutils-2.20.1.tar.bz2
. p  K8 M/ r# x& \glibc-2.9.tar.gz
, @  g$ T2 [  v+ c: {5 d2 n7 `dmalloc-5.5.2.tgz0 }( s" j2 {5 s- X7 W0 C8 [) T. {2 o6 ^
glibc-ports-2.9.tar.bz2
% \; b% ^& F7 @- R3 Kmpfr-2.4.2.tar.bz2
0 A* }( O5 G5 N. Vduma_2_5_15.tar.gz
2 S: o; b5 g% |) \, Mgmp-4.3.2.tar.bz2
, \# u+ V# \8 C, c  y8 lncurses-5.7.tar.gz
% \( S6 G9 b4 |- A2 ?ecj-latest.jar, q6 s; z: ~2 \5 [4 \3 F! I8 o
libelf-0.8.13.tar.gz" [$ \. O. B; H9 Z+ d, A9 E
sstrip.c
' \' h+ N5 ~$ r# I% ngcc-4.4.3.tar.bz2
4 K: p  A$ S' b! p; G/ ylinux-2.6.33.7.tar.bz2
$ ^. e0 ~% Y' L1 a0 t& Vstrace-4.5.19.tar.bz24 _- \# j* d% Q$ Q  V% l. ~
gdb-6.8.tar.bz2
! F2 a5 E/ {6 S4 Y. K9 N0 c5 O2 ^' a1 Mltrace_0.5.3.orig.tar.gz
1 K3 ]9 a0 ~! M
8 g! @5 j9 n$ O1 }% e, K# j下载完之后,记得将这些软件包放在配置时指定的文件夹(src/下): ~$ N9 K- H) @) F) {- I. Z
以上工作都完成以后,咱们就要开始真正的配置工作了。3 t5 P% J" `% U7 k! m7 X
首先用终端进入到crosstool-ng-1.8.1_build/目录下。6 j% f* s4 @" ^! j
然后执行$ ct-ng menuconfig, 此时会出现crosstool-ng的配置窗口。6 I4 r. j* r+ {2 |- q4 L
1、已下载好的源码包路径和交叉编译器的安装路径。) `! a7 C1 Q2 B3 j1 q4 h5 U2 i
Paths and misc options --->5 h: I1 I1 l; q* C  F3 N$ j
(${HOME}/crosstool-ng/src) Local tarballs directory保存源码包路径
  h4 U0 ~( q+ X, }! H(${HOME}/crosstool-ng/x-tools/${CT_TARGET}) Prefix directory交叉编译器的安装路径
1 N; l" ?8 F3 o3 b+ k2 y( P/ X7 p以上根据自己的路径自行修改8 G2 B/ S- S. u) H/ }* y, D
2、修改交叉编译器针对的构架
0 j/ I1 ^* r# H0 L* q: qTarget options --->. K! J- w7 C! R. Z: j! Y& O! X
由于咱们是copy的默认的davinci的配置文件,所以这项不用修改
: o, c3 Y% ~- z  R' v9 K7 d$ z3、增加编译时的并行进程数,以增加运行效率,加快编译。$ `' L: Q0 [0 U0 \7 l$ Y" d. E
Paths and misc options --->( s9 X2 k2 W9 ^  \4 Y; d/ v, l! N
*** Build behavior ***
) Y4 Y% ^6 F  H0 Q$ M6 N(4) Number of parallel jobs
+ v" k( H5 _# j! \3 |5 D1 z这个数值不宜过大,应该为CPU数量的两倍。由于我的CPU是双核的,所以我填了4
. Y3 M# S* q* O' @% \0 _: ?4、选择gcc版本号
, ]! r# v1 k( I9 T) u& DC compiler --->- l9 ]% G; C( Y. r, ]1 X, x) r$ Y
gcc version (xxx)---> //选择咱们需要编译的gcc 4.4.32 e, S" E  m) F* a; F
5、其他工具包版本选择
: W7 t, G. j2 m: BOperating System --->
8 `3 c- v! a! V. o% YLinux kernel version---> 内核版本! S$ C6 n0 _1 n
Binary utilities --->
  J9 j; l$ @4 D) E; G: \  Lbinutils version---> binutils包" U" Z- Y& ?; C6 W+ ~
C-library--->
* U" O! V1 d% q7 L& ^( fglibc version ---> c库
8 m( M) h  n7 U1 z2 eCompanion libraries--->+ F' q- I' {& k3 S2 |) v5 P
GMP、MPFR、PPL、CLooG/ppl等版本的选择
( _9 }# A# p1 U* O  V6 n) f8 e+ [7 H6、修改操作系统选项,禁止内核头文件检测9 I: D1 D& |9 d
Operating System --->

[ ] Check installed headers9 q# k- i  e  d" D
另:在选择CLooG/ppl版本时,我刚开始选择的是CLooG/ppl 0.15.10,但是出现了一下错误1 q) j6 P, P( d( j! e
[ERROR] Build failed in step 'Installing CLooG/ppl'
7 i& H, L  B5 Y4 z7 h' A[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.9.0/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
; P3 ^* T/ a- [$ r1 s! }; S解决方法:选择CLooG/ppl 0.15.9就可以了。

五、编译工具链

配置完后,在crosstool-ng-1.8.1_build目录下执行命令:$ ct-ng build.4。 我的比较慢用了4个小时,但是别人都用了40分钟,dont know why?" @. {, J: B0 I- o: c* B6 i
编译好的工具链在x-tools/arm-davinci-linux-gnueabi/bin目录下面,添加到环境变量中就可以使用了。
) o* l3 N- ?; L! `7 a- z最后测试一下工具链版本:
8 E7 P( B$ T2 y- M$ l6 Y5 x#arm-davinci-linux-gnueabi-gcc -v& ^* r$ \3 H, N
#Using built-in specs.0 V6 r, ]# T5 g% |  E2 ?
Target: arm-davinci-linux-gnueabi
# A- L4 R* i% c1 T) @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
% u- w* y- c7 p& SThread model: posix
3 \* w% N8 y9 n: A0 \gcc version 4.4.3 (crosstool-NG-1.9.0)

+ F$ O6 |6 _6 V' a9 Q' X( b2 x! a

crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.
+ L; y, w1 T3 ~  B, c使用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 */
4 E) H6 T6 U! E! r7 X#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1- a6 o1 V( ?; b+ U; J4 J
# error Your version of gcc miscompiles the __weak directive$ @6 y1 t4 s1 Q" u9 T
#endif

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

6 ?2 Q9 v7 s) N" I0 T

测试环境:

Debian Linux 2.6.18-6-686
. \, g+ l) q- M2 I) i/ G; ^' eUbuntu 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
: ]5 E/ P, |# [' {9 U. r
9 B6 q. @6 B# S& SUbuntu 9.0.4 请先安装下 termcap库 参考本文 错误与解决 4.. .

3.crosstool-ng使用范例

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

cd /tmp/crosstool-ng

mkdir build_toolchain

( D3 ]( b! k% k5 @/ Y

mkdir ~/src1 ^8 T9 N- e, W: S  x3 y' t; a, X
生成默认配置文件:

ct-ng arm-unknown-linux-gnueabi3 c- N  F: s5 ?/ {8 {& v1 D) L
也可以这样子:4 X$ j0 l0 P9 X% H3 _3 W5 S6 u4 \% ]
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 q+ X$ [) v; o' ~
vim .config

修改kernel的安装版本

CT_KERNEL_VERSION="2.6.18"

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

CT_LIBC_GLIBC_MIN_KERNEL="2.6.18"

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

6 B2 q7 h1 [" G
PS:如果你编绎还是失败了或者测试失败了,那可以参考一下,我测试通过的配置文件:crosstool-ng for arm720t配置文件& I4 y+ _1 g2 ^; z( J

4 U! ]5 M$ {* d. S8 M3 }; y
. f* G* i8 t( b! s/ ~5 E-----------我是分隔线 2010快乐 -----------------------------------
1 k6 D, |7 b2 p- w
6 Y/ u4 Z1 F+ K) e6 f9 q0 f- @: elibc库已经换用git来管理源码(sources.redhat.com),下面两个包7 `/ @6 B  N# V% ?5 ^
glibc-cvs-2.9.tar.gz0 U$ }' v. q& h: G
glibc-ports-cvs-2.9.tar.gz0 v% H  c2 }, n. s9 r& K
将无法从cvs中取出,临时可以这样子解决:
0 \4 V& @  K  B/ K- _% Ucd /tmp/
0 Y$ T% _* W+ y2 Kwget ftp://sourceware.org/pub/glibc/releases/glibc-2.9.tar.bz27 [, K! p2 B( ^/ ^3 M
tar jxvf glibc-2.9.tar.bz2+ m8 @6 c! P+ C& |  G
mv glibc-2.9 glibc-cvs-2.9$ c3 x, d( n, [" H5 l' l) z+ T
tar zcvf glibc-cvs-2.9.tar.gz glibc-cvs-2.9
3 m0 |2 g* J# F9 E6 l: x; l$ X6 t3 D
wget ftp://sourceware.org/pub/glibc/releases/glibc-ports-2.9.tar.bz21 I, x/ y5 j+ C* S% _9 I
tar jxvf glibc-ports-2.9.tar.bz2
6 G3 T0 ^4 ^5 e2 Tmv glibc-ports-2.9 glibc-ports-cvs-2.9) K  V7 K3 c8 j8 Y% }
tar zcvf glibc-ports-cvs-2.9.tar.gz glibc-ports-cvs-2.9. \; ^' f- J9 w. _, V

; e' D3 ^: h5 f9 z/ u; c复制这两个*.gz包至 crosstool-ng设置的包下载路径(本例中设置的是:~/src)& ]- v' k) v0 `0 S- R+ g( S& v7 |

6 L0 b) z* Q* M! `* a--------------------------------------------------------------------------------------

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

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

4.为工具链增加新链接


: m$ C3 j& N/ f4 Z1 v9 V/ B

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

./autoln.sh

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

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

#!/bin/bash
" c, L1 B$ `( q0 ^& i3 l5 U2 K! t
#
" d( r* N! q. U0 g# main
$ r5 ]' R$ ?& \. w: k4 F8 r# m#
6 k' x$ E- b) M8 ^if [ $# -lt 1 ] ; then+ X& O  W- p1 |: }' [) o0 ~
echo "default path: ./"6 g; @5 u- n" h& |  |$ I2 }
BIN_PATH=./" M* I4 Q. T5 E  k2 }; R; e  G$ ~  \. ~
else
) Y9 c2 m* c8 a# L- v8 F$ B4 xBIN_PATH=$1
; {2 D6 L5 j" ^. E' l+ hfi( K9 V) F: M& L9 k. A
if [ ! -d $1 ] ; then
% e6 u3 ~0 S3 H$ O) l: a8 fecho "path error"
9 O3 h& N! K4 {0 o, @5 m7 yexit# L3 g. q* N  ^
fi; a2 B( N$ h% J5 B7 j; u
cd $BIN_PATH8 k* a# J/ J) H. \1 T9 k" p
SRC=`ls | awk '{print $1}'`
" I* t0 e( }9 D: k- E( V
1 g0 n0 r& x! @7 e4 U1 Yfor i in $SRC ; do
# \" v2 ~; U7 \$ y, Bif [ "$i" != "autoln.sh" ] ; then$ ?0 x6 J2 ]7 }2 X* g
#echo $i
3 e" J/ c; Y# b" p  S) z* Z  b4 sTARGET=`echo $i | sed 's/arm-unknown-linux-gnueabi/arm-linux/g' `0 `3 h& M& O' e$ N$ G
echo $TARGET$ w  P. _4 l7 ?& U2 H
ln -s $i $TARGET( R9 r8 \5 {3 ?& @
fi
! J/ s: S( ^! o( z, tdone

错误与解决

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'
# c  t9 G5 W+ H; z6 z[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
  ^: x3 ~! R/ ]8 x" A* F; n( B[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' at line # 471 in function 'CT_GetCVS'# Y* \% ]4 w! d+ w$ w' q9 q6 B) 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'
% \8 r; O) p# A/ y5 c( S[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 449 in function 'main'
& {6 o. f- ]9 B[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.
& R- w: N9 _9 k# O" x, `[ERROR] (elapsed: 33:29.56)
) f% }- A* k6 |[33:30] / make[1]: *** [build] 错误 127  T! t7 d  e- u& S+ h- d, A! G
make: *** [build.4] 错误 2

解决: sudo apt-get install cvs

3.

[INFO ] Installing C library headers! {/ R0 a0 U( G
[EXTRA] Configuring C library
& @7 E$ q- g3 M[EXTRA] Installing C library headers
2 w" O- T& g4 r  O, 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
  V/ C9 _5 Z" G+ |; j" g: p/ E[ERROR] make[2]: *** [install-headers] Error 2
' ^# j* }2 X; a' D[ERROR] Build failed in step 'Installing C library headers'
* P/ e( F* b# z/ q6 F; g1 J[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)( f5 T; t" E, ~9 M3 o
[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'& ]3 n( k; R6 l; e& ?
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'! n" Y) M+ B8 `# a8 {( _9 {
[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.6 H: s" R5 ~& R7 h* h+ C
[ERROR] (elapsed: 36:41.91)
( E2 h$ I  K3 v/ Q6 j[36:42] / make[1]: *** [build] 错误 2
% j: [) U' Q+ Y! G8 b& smake: *** [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
0 ~% r  b" i  I2 }9 e) W9 ab-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 P6 Y( I' P3 L[ALL ] /[^$ ~) [4 m. r% C
[ALL ] mawk: scripts/gen-sorted.awk: line 19: syntax error at or near ]
/ [8 y" H/ T% v/ P[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 ] =================================================================4 v) R# P2 i* ?  H! K
[INFO ] Installing C library
% P5 l, s9 }  t( M, @; X[EXTRA] Configuring C library
( ^! k& b0 |  ?9 D+ }% [0 s  J[WARN ] Removing "-pipe" for use with glibc>=2.66 p" A( {$ K# V  A
[EXTRA] Building C library2 }8 S* F/ t8 L  G6 U
[ERROR] make[4]: *** [/tmp/crosstool-ng/targets/arm-unknown-linux-gnueabi/build/build-libc/elf/ld.so] Error 2
% U% u  ^: l  p! _! f[ERROR] make[3]: *** [elf/subdir_lib] Error 25 |+ Z$ @5 ~7 U  q
[ERROR] make[2]: *** [all] Error 2( w( P6 ?+ z4 F- K# R' @3 @# d- }
[ERROR] Build failed in step 'Installing C library'
" B9 O' A% n. D9 ~8 M; i[ERROR] Error happened in '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)' {! I! a+ z7 a- `* p  p
[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/build/libc/glibc.sh' at line # 504 in function 'do_libc'
  K4 ^5 [) h0 D# g[ERROR] called from '/opt/crosstool-ng/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
4 c% A' b7 q2 M$ a2 E[ERROR] Look at '/home/star/x-tools/arm-unknown-linux-gnueabi/build.log' for more info on this error.6 d7 |' X8 M/ o# e+ y
[ERROR] (elapsed: 32:05.76)/ p  E* Y" p9 R
[32:06] / make[1]: *** [build] 错误 2
0 n8 S9 Z$ o6 H( f3 G% ^make: *** [build.4] 错误 2

解决:

sudo apt-get install gawk

cd /usr/bin

sudo mv mawk mawk.bak

sudo ln -s gawk mawk7 _9 Z; E. A6 k4 I
5.' z5 }: _  @6 e5 n" _
49567 [ERROR] configure: error: no termcap library found  F) L- i# D/ A: Q
49568 [ERROR] make[3]: *** [configure-gdb] Error 1
, A8 L6 L1 R' a4 M$ N49569 [ALL ] make[3]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'
. I0 I9 H2 h5 o5 Y49570 [ERROR] make[2]: *** [all] Error 2
- \! j2 k' q3 O1 b0 e  l: y49571 [ALL ] make[2]: Leaving directory `/opt/build_toolchain/targets/arm-unknown-linux-gnueabi/build/build-gdb-cross'2 E6 v- d: v$ A: i! x& w% I1 l
49572 [ERROR] Build failed in step 'Installing cross-gdb'
- s; j0 |/ I- l( _49573 [ERROR] Error happened in '/usr/lib/ct-ng-1.4.1/scripts/functions' in function 'CT_DoExecLog' (line unknown, sorry)
0 k  n/ V2 }3 S6 y% m$ Y6 Y49574 [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'; l* H; y  j" t! m
49575 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/build/debug.sh' at line # 35 in function 'do_debug'' Z$ f4 ~" j  s; O: E
49576 [ERROR] called from '/usr/lib/ct-ng-1.4.1/scripts/crosstool-NG.sh' at line # 494 in function 'main'
% v4 b2 o9 Y! ~49577 [ERROR] Look at '/opt/arm/4.3.2/arm-unknown-linux-gnueabi/build.log' for more info on this error.
. v/ E( E* z3 O5 S* W; r49578 [ERROR] (elapsed: 72:30.97)1 D: X* I2 s; F1 o
5 ]5 W% L3 A8 S4 V% J6 r
解决:. Q' P/ d! w% t3 j, V) s
这个问题我只在ubuntu 9.0.4中遇到过...缺少了termcap 库,但我在源里又没有搜到termcap相关的库(似乎是被其它库替换了,termcap这东西的确很古老)! u, I3 ^. m: A/ g
cd /tmp: u9 \  Z0 B9 Z' Q
wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
1 y# w2 r- |7 R! Wtar zxvf termcap-1.3.1.tar.gz7 P5 B8 }$ N& b" a8 A: w+ @; N" p# B, N
cd termcap-1.3.1' ?; c: |; {- g; t
./configure --prefix=/usr
& u- b% H% L. @) v- w4 dmake
7 @) G! e- \6 K" Z+ l' k# Kmake install
7 v. Z1 n$ q# L3 D# o, s# W1 h(又需要从头编译工具链了 …… )


/ X1 r: F  d- D( `- }

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-3 11:41 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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