现在的位置: 首页 > 综合 > 正文

LFS chroot后装glibc时make出错/bin/sh: command substitution: line 3: syntax error near unexpected token `)’

2012年12月05日 ⁄ 综合 ⁄ 共 984字 ⁄ 字号 评论关闭

我是Linux新手,文章有不对的地方欢迎指正,谢谢。

 

我做的是LFS7.1,不过听说LFS7.0也会遇到同样的错误。

 

Google上搜索看国外也很多人遇到这样的错误,有人说是/bin目录到/tools/bin目录下的符号链接错误,于是全部重建一次,依然解决不了,虽然我解决不了,但还是建议遇到这样的错误的童鞋们尝试一下。

也有这样的说法,shell的解析器默认为dash,#!/bin/sh可能使用了默认的dash而不是我们在第五章所安装的bash,但是LFS在chroot,何来的dash?况且在安装glibc之前已经执行下面命令,更改了默认的解析器:

sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in


我能进行到这一步,前面已经遇到类似的问题,也就是在chroot后只要使用')'就会出错,当然还是用其他方法解决了。如:

DL=$(readelf -l /bin/sh | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p')
sed -i "s|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=$DL -o|" \
scripts/test-installation.pl
unset DL

执行第一行时报错syntax error near unexpected token `)' 

于我的解决办法是,先执行

readelf -l /bin/sh | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p'

得到结果xxxxxxx,

然后在执行

DL=xxxxxxx

在LinuxSir论坛上问也没回答,于是开始怀疑是bash的问题。。

LFS7.1安装的是bash4.2,我尝试返回到第五章的环境,把bash安装涉及的内容删除,然后重新安装了bash4.1.

也就是把bash4.2换称bash4.1。记住按步骤安装

回到chroot环境,我先把/bin目录删除,重建。再重建符号链接到/tools/bin

ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin


冲动地试了一个命令

DD=$(uname -m)

成功了,没报错,泪奔啊,从此可以用括号了。

回去安装glibc。

make

一帆风顺。


不知道这次把bash4.2改为4.1会不会影响后续的安装。总之,见招拆招就是了。

抱歉!评论已关闭.