尝试在 WIndows 上编译 gmp-6.2.1 时使用 'char 9: unterminated `s' 命令失败
Make failing with 'char 9: unterminated `s' command' when trying to compile gmp-6.2.1 on WIndows
所以我正在尝试在我的 Windows 10 PC 上为 运行ning symengine
编译 GNU 多精度算术库。
我能够安装 MinGW、m4
、make
等先决条件并添加到 PATH
。这些是我 运行
的以下命令
cd gmp-6.2.1
./configure --prefix=C:/GMP
make
现在,当我 运行 make 时,它失败并显示给定的日志
/usr/bin/make all-recursive
make[1]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1'
Making all in tests
make[2]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in .
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in devel
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/devel'
make[3]: Nothing to be done for `all'.
...
...
Making all in cxx
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/cxx'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/cxx'
make[2]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in mpn
make[2]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/mpn'
/bin/sh ../libtool --mode=compile --tag=CC ../mpn/m4-ccas --m4="m4" gcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo add_n | sed 's/_$//'` -m32 -O2 -pedantic -fomit-frame-pointer -mtune=broadwell -march=broadwell `test -f 'add_n.asm' || echo './'`add_n.asm
libtool: compile: ../mpn/m4-ccas --m4=m4 gcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_add_n -m32 -O2 -pedantic -fomit-frame-pointer -mtune=broadwell -march=broadwell add_n.asm -o add_n.o
/usr/bin/sed: -e expression #1, char 9: unterminated `s' command
No --m4 specified
make[2]: *** [add_n.lo] Error 1
make[2]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/mpn'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1'
make: *** [all] Error 2
似乎 sed
表达式失败了,但它应该如何表现并不明显。第一个和第二个 libtool 命令标志在输出中有所不同 - -m4="m4"
& -m4=m4
考虑到 make 规则是
这似乎很可疑
.asm.lo:
$(LIBTOOL) --mode=compile --tag=CC $(top_srcdir)/mpn/m4-ccas --m4="$(M4)" $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$<
(注意我在msys文件夹下安装了m4)。
我应该寻找解决问题的任何指示吗?
附上config.log.
更新
gmp-6.2.1\mpn
中与 sed 命令相关的 makefile 变量看起来很奇怪。它似乎应该事先扩展,因为 $*
是 makefile 中的一个自动变量。
AM_CPPFLAGS = -D__GMP_WITHIN_GMP -I$(top_srcdir) \
-DOPERATION_`echo $* | sed 's/_$$//'`
其他子目录如 mpf\
和 mpq\
中的 Makefiles 有这个 AM_CPPFLAGS = -D__GMP_WITHIN_GMP -I$(top_srcdir)
查看configure
文件,好像有两处生成了sed字符串,主要是因为这里替换了$^
host_os=$*
IFS=$ac_save_IFS
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
build_os=$*
IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
我在 MINGW64 的 bash
上 运行,那里出现了错误。 运行 在 sh
上(从 MSYS 安装)成功。
所以我正在尝试在我的 Windows 10 PC 上为 运行ning symengine
编译 GNU 多精度算术库。
我能够安装 MinGW、m4
、make
等先决条件并添加到 PATH
。这些是我 运行
cd gmp-6.2.1
./configure --prefix=C:/GMP
make
现在,当我 运行 make 时,它失败并显示给定的日志
/usr/bin/make all-recursive
make[1]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1'
Making all in tests
make[2]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in .
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in devel
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/devel'
make[3]: Nothing to be done for `all'.
...
...
Making all in cxx
make[3]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/cxx'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests/cxx'
make[2]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/tests'
Making all in mpn
make[2]: Entering directory `/c/Users/Devesh/Downloads/gmp-6.2.1/mpn'
/bin/sh ../libtool --mode=compile --tag=CC ../mpn/m4-ccas --m4="m4" gcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo add_n | sed 's/_$//'` -m32 -O2 -pedantic -fomit-frame-pointer -mtune=broadwell -march=broadwell `test -f 'add_n.asm' || echo './'`add_n.asm
libtool: compile: ../mpn/m4-ccas --m4=m4 gcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_add_n -m32 -O2 -pedantic -fomit-frame-pointer -mtune=broadwell -march=broadwell add_n.asm -o add_n.o
/usr/bin/sed: -e expression #1, char 9: unterminated `s' command
No --m4 specified
make[2]: *** [add_n.lo] Error 1
make[2]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1/mpn'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/Users/Devesh/Downloads/gmp-6.2.1'
make: *** [all] Error 2
似乎 sed
表达式失败了,但它应该如何表现并不明显。第一个和第二个 libtool 命令标志在输出中有所不同 - -m4="m4"
& -m4=m4
考虑到 make 规则是
.asm.lo:
$(LIBTOOL) --mode=compile --tag=CC $(top_srcdir)/mpn/m4-ccas --m4="$(M4)" $(CCAS) $(COMPILE_FLAGS) `test -f '$<' || echo '$(srcdir)/'`$<
(注意我在msys文件夹下安装了m4)。 我应该寻找解决问题的任何指示吗? 附上config.log.
更新
gmp-6.2.1\mpn
中与 sed 命令相关的 makefile 变量看起来很奇怪。它似乎应该事先扩展,因为 $*
是 makefile 中的一个自动变量。
AM_CPPFLAGS = -D__GMP_WITHIN_GMP -I$(top_srcdir) \
-DOPERATION_`echo $* | sed 's/_$$//'`
其他子目录如 mpf\
和 mpq\
中的 Makefiles 有这个 AM_CPPFLAGS = -D__GMP_WITHIN_GMP -I$(top_srcdir)
查看configure
文件,好像有两处生成了sed字符串,主要是因为这里替换了$^
host_os=$*
IFS=$ac_save_IFS
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
build_os=$*
IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
我在 MINGW64 的 bash
上 运行,那里出现了错误。 运行 在 sh
上(从 MSYS 安装)成功。