1

次のコマンドを使用して、mingw/msys で binutils 2.19.1 をビルドしようとしています。

export PREFIX=/usr/local/cross
export TARGET=i586-elf
cd /usr/src
mkdir build-binutils
cd /usr/src/build-binutils
../binutils-x.xx/configure --target=$TARGET --prefix=$PREFIX --disable-nls
make all
make install

そして、次のエラーが発生します:

/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../binuti
ls-2.19.1/bfd -I. -D__USE_MINGW_FSEEK    -I. -I../../binutils-2.19.1/bfd -I../..
/binutils-2.19.1/bfd/../include     -W -Wall -Wstrict-prototypes -Wmissing-proto
types -Wno-format -Werror -g -O2 -D__USE_MINGW_ACCESS -c -o archive.lo ../../bin
utils-2.19.1/bfd/archive.c
./libtool: line 2258: cygpath: command not found
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../binutils-2.19.1/bfd -I. -D__U
SE_MINGW_FSEEK -I. -I../../binutils-2.19.1/bfd -I../../binutils-2.19.1/bfd/../in
clude -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wno-format -Werror -g -
O2 -D__USE_MINGW_ACCESS -c "" -o archive.o
gcc.exe: error: : No such file or directory
gcc.exe: fatal error: no input files
compilation terminated.
make[3]: *** [archive.lo] Error 1
make[3]: Leaving directory `/usr/src/build-binutils/bfd'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/usr/src/build-binutils/bfd'
make[1]: *** [install-bfd] Error 2
make[1]: Leaving directory `/usr/src/build-binutils'
make: *** [install] Error 2
/x.sh: line 8: ../gcc-4.5.0/configure: No such file or directory
make: *** No rule to make target `all-gcc'.  Stop.
make: *** No rule to make target `install-gcc'.  Stop.

diff binutils バージョンでも同じエラーが発生します。binutils-2.19.1、2.22.0、2.23.1 を試しましたが、何が問題なのでしょうか? また、私のmingwのgccコンパイラのバージョンは4.6.2です

私もコマンドを試しました

make CFLAGS="-Os -w"

それでも同じ問題が続く

4

1 に答える 1

0

同様のエラー (「cygpath: コマンドが見つかりません」) が発生しますが、新しいバージョンです。FWICT binutils 内に、Cygwin が存在することを前提とする行がありますが、ビルド手順に Cygwin が必要であるというメモはありませんでした (ただし、見逃した可能性があります)。

Cygwin をインストールするのが正しいアプローチだと思いますが、それが他の方法で Mingw に干渉するかどうかはわかりません。binutils は単に cygpath を使用して O/S パスの命名規則を変換しようとしているように見えるので、ダミーの cygpath シェル スクリプトを作成してこの問題を回避しました。

#options described at http://cygwin-lite.sourceforge.net/html/cygpath.html
#echo "MISSING CYGPATH"
if [ "x$1" == "x-w" ] 
then
    echo $2 #just echo path name back as-is
else
    read -p "MISSING CYGPATH.  PARAMS WERE: 1=$1 2=$2 3=$3 4=$4 5=$5"
fi

ビルド中にエラーが発生するのではなく、binutils がそれを見つけられるように、これを PATH に配置しました。このスクリプトはパス名をそのままエコーします (パスの名前変更のシナリオの場合)。これは、最近の Windows はとにかく Unix スタイルのパスを理解できるように思われるためです (そして、私は Windows で実行していました)。それ以外の場合、このスクリプトは一時停止して最初のいくつかのコマンド ライン パラメーターを表示し、さらに必要な機能に関するヒントを提供します。

HTH 誰かが少し遠くへ

于 2015-01-24T22:19:16.533 に答える