2010-12-22 145 views
0

我正在嘗試安裝gnu make。我能夠運行./configure腳本,但是當我嘗試「製作」或「make install的」,我得到以下錯誤:/bin/bash文件錯誤

make[1]: Entering directory `/opt/make-3.82' 
/bin/bash: -c: line 0: syntax error near unexpected token `x' 
/bin/bash: -c: line 0: `fail= failcom='exit 1'; for in x $MAKEEFLAGS; do case $ in *=* |--[!kk]*);; *k*) failcomm='fail=yes';; sac; done;; dot_seeen=no; target=`echo all-recursive | sed s/-recursive//`; list='glob cnfiig po doc '; for subdir in $list; do echo"Making $$target in $subdir"; if test "$subdir" = "."; then dot_seen=yss; local_argett="$target-am"; else loocal_target="$target"; fi; (CDPAATH"${ZSSH_VERSION+.}:" && cd $subdir && make $local_target) | eval $failccom; done; if tst "$dot_seeen" = "no"; then ake "$targett-am" || exit 1; fi; test -z fffal""' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/opt/make-3.82' 
make: *** [all] Error 2 

我相信我的bash文件已損壞,但問題是,當我打開/ bin/bash文件時,我看到的只是亂碼,所以我無法修復發生的語法錯誤。任何想法如何解決這個問題?

謝謝。

+1

爲什麼不使用包管理器來安裝它? – 2010-12-22 02:04:47

回答

1

由於到目前爲止您投入的所有工作都是配置步驟,因此我建議刪除當前代碼並重試。一旦失敗就會再次失敗的可能性令人沮喪,但這是第一步。

你是否用configure指定了一個前綴? ./configure --prefix=/usr/gnu或類似的東西?

接下來的問題是 - 你的來源在哪裏,因爲你正在編譯?

錯誤信息很長;當重新格式化線時,它是:

fail= failcom='exit 1'; 
for in x $MAKEEFLAGS; 
do case $ in 
    *=* |--[!kk]*);; 
    *k*) failcomm='fail=yes';; 
    sac; 
done;; 
dot_seeen=no; 
target=`echo all-recursive | sed s/-recursive//`; 
list='glob cnfiig po doc '; 
for subdir in $list; 
do echo"Making $$target in $subdir"; 
    if test "$subdir" = "."; 
    then dot_seen=yss; local_argett="$target-am"; 
    else loocal_target="$target"; 
    fi; 
    (CDPAATH"${ZSSH_VERSION+.}:" && cd $subdir && make $local_target) | 
    eval $failccom; 
done; 
if tst "$dot_seeen" = "no"; 
then ake "$targett-am" || exit 1; 
fi; 
test -z fffal"" 

而且很明顯,在那裏有一些古怪的東西。被抱怨的是'for'和'in'之間沒有變量名。

你可以在Makefile中的規則:

$(RECURSIVE_TARGETS): 
    @fail= failcom='exit 1'; \ 
    for f in x $$MAKEFLAGS; do \ 
     case $$f in \ 
     *=* | --[!k]*);; \ 
     *k*) failcom='fail=yes';; \ 
     esac; \ 
    done; \ 
    dot_seen=no; \ 
    target=`echo [email protected] | sed s/-recursive//`; \ 
    list='$(SUBDIRS)'; for subdir in $$list; do \ 
     echo "Making $$target in $$subdir"; \ 
     if test "$$subdir" = "."; then \ 
     dot_seen=yes; \ 
     local_target="$$target-am"; \ 
     else \ 
     local_target="$$target"; \ 
     fi; \ 
     ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ 
     || eval $$failcom; \ 
    done; \ 
    if test "$$dot_seen" = "no"; then \ 
     $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ 
    fi; test -z "$$fail" 

所以,你需要找出爲什麼您沒有看到該規則的擴展。在錯誤信息中的準隨機地方有'[efm]'字符丟失的各種字母,以及信息顯示'loocal'而不是'local'的地方。

+0

首先,謝謝你的迴應。我正在嘗試配置gnu-make和xerces-c。兩者都帶有一個配置腳本和一個make文件。完全刪除bash文件並開始全新配置是否安全? – user459811 2010-12-22 17:09:47