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"

bt 仍然存在同样的问题

4

1 回答 1

0

我收到类似的错误(“cygpath:找不到命令”),但版本较新。FWICT binutils 中有一行假设存在 Cygwin,尽管我在构建说明中没有看到任何说明需要 Cygwin 的注释(不过我可能错过了它)。

我想正确的方法是安装 Cygwin,但我不确定这是否会以其他方式干扰 Mingw。看起来 binutils 只是试图使用 cygpath 在 O/S 路径命名约定之间进行转换,所以我通过创建一个小的虚拟 cygpath shell 脚本解决了这个问题:

#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

我将它放在 PATH 上,以便 binutils 可以找到它,而不是在构建期间出现错误。该脚本只是按原样回显路径名(用于路径重命名场景),因为这些天 Windows 似乎能够理解 Unix 样式的路径(而且我在 Windows 上运行)。对于其他任何事情,此脚本将暂停并显示前几个命令行参数,以提供一些关于需要哪些进一步功能的提示。

HTH 有人走得更远一点

于 2015-01-24T22:19:16.533 回答