在OS X 10.8上安装ncurses时发生GCC错误

在OS X 10.8上安装ncurses时发生GCC错误,gcc,makefile,ncurses,Gcc,Makefile,Ncurses,我正在尝试在OSX10.8上安装5.9,并安装GCC4.9。当我在ncurses目录中运行/configure时,不会显示错误或警告,但当我运行make时,会得到gcc:error:无法识别的命令行选项“-No cpp precomp”。在谷歌搜索这个问题(并进行尝试)时,我发现——no cpp precomp(带有两个破折号,即长标志形式)是一个有效的命令 我不确定是什么促使GCC运行无效命令–它是make,还是ncurses本身指定的命令 有办法解决这个问题吗?如果是,怎么做 编辑:我尝试使

我正在尝试在OSX10.8上安装5.9,并安装GCC4.9。当我在
ncurses
目录中运行
/configure
时,不会显示错误或警告,但当我运行
make
时,会得到
gcc:error:无法识别的命令行选项“-No cpp precomp”
。在谷歌搜索这个问题(并进行尝试)时,我发现
——no cpp precomp
(带有两个破折号,即长标志形式)是一个有效的命令

我不确定是什么促使GCC运行无效命令–它是
make
,还是
ncurses
本身指定的命令

有办法解决这个问题吗?如果是,怎么做

编辑:我尝试使用文本编辑器手动将
/configure
文件中的引用从
-no-cpp-precomp
更改为
--no-cpp-precomp
,但遇到了这个问题,尽管GCC似乎接受了
--no-cpp-precomp
选项。之后,我尝试运行了
autoreconf
,得到了以下结果:

configure:6558:错误:可能未定义宏:AC_DIVERT_帮助
如果此令牌和其他令牌是合法的,请使用m4_pattern_allow。
请参阅Autoconf文档。
自动恢复:/opt/local/bin/autoconf失败,退出状态:1
使用
m4\u模式\u allow
选项运行后:

autoreconf:'configure.ac'或'configure.in'是必需的
运行
/configure&&make
之后:

cd-man&&make DESTDIR=”“all
sh./MKterminfo.sh./terminfo.head./../include/Caps./terminfo.tail>terminfo.5
cd包括和制作DESTDIR=“”全部
猫诅咒.head>诅咒.h
AWK=gawk sh./MKkey_defs.sh./Caps>>curses.h
sh-c'如果测试“chtype”=“cchar\u t”;然后cat./curses.wide>>curses.h;fi'
cat./curses.tail>>curses.h
gawk-f MKterm.h.awk./Caps>term.h
sh./edit_cfg.sh../include/ncurses_cfg.h term.h
**编辑:具有\u TCGETATTR 1
**编辑:具有\u TERMIOS\u H 1
**编辑:具有\u TERMIO\u H 0
**编辑:断开的链接器0
cd ncurses&&make DESTDIR=“”全部
gcc-o make_hash-DHAVE_CONFIG_H-I../ncurses-I../include-I../include-DUSE_BUILD_CC-DHAVE_CONFIG_-I../ncurses-I../D_DARWIN_C_SOURCE-DNDEBUG-I../include-I/usr/local/include/ncurses-O2--param max内联insns single 1200--no cpp precomp tinfo/tinfo make_hash.C-Wl
gcc:错误:无法识别的命令行选项“--无cpp预编译”
make[1]:***[make_hash]错误1
make:**[全部]错误2

--no cpp precomp
是一个过时的Apple GCC选项,它应该生成警告而不是错误,但如果将
-Werror
标志传递给编译器,则无论哪种方式,它都会在警告时失败,您必须手动从构建脚本中删除它,然后运行
autoreconf
,或者您可以直接从
configure
脚本中删除它

--no cpp precomp
是一个过时的Apple GCC选项,它应该生成警告而不是错误,但是如果
-Werror
标志被传递给编译器,它将在警告时失败,无论哪种方式,您必须手动从构建脚本中删除它,然后运行
autoreconf
,或者您可以直接从
configure
脚本中删除它

这似乎已在ncurses 5.9的最新补丁中修复

可在此处找到5.9来源:

最新的修补程序在这里:但最新的汇总修补程序似乎有修复程序:

要应用修补程序,请获取上面的2个文件:

$ tar xvf ncurses-5.9.tar.gz
$ cd ncurses-5.9
$ gzip -dc ../patch-5.9-20130504.sh.gz | sh

这似乎已在ncurses 5.9的最新补丁中修复

可在此处找到5.9来源:

最新的修补程序在这里:但最新的汇总修补程序似乎有修复程序:

要应用修补程序,请获取上面的2个文件:

$ tar xvf ncurses-5.9.tar.gz
$ cd ncurses-5.9
$ gzip -dc ../patch-5.9-20130504.sh.gz | sh

我意识到这已经很老了,但因为我遇到了同样的问题(需要在MacYosemite 10.10上构建GCC4.9),也许它也会帮助其他人。看起来configure脚本检测到它是Mac,并假设使用了clang,即使路径中的“gcc”是GNU。似乎他们在新版本中修复了检测逻辑。我在Boost 1.37中发现了同样的问题,它在Boost 1.55之前的某个地方得到了修复。

我意识到这一问题现在已经很老了,但因为我遇到了同样的问题(需要在Mac Yosemite 10.10上构建GCC 4.9),也许它也会帮助其他人。看起来configure脚本检测到它是Mac,并假设使用了clang,即使路径中的“gcc”是GNU。似乎他们在新版本中修复了检测逻辑。我在Boost 1.37中发现了同样的问题,它在Boost 1.55之前的某个地方得到了修复。

我不确定你所说的“Apple GCC”是什么意思–我从源代码安装了GCC,直接从GNU网站上提供的一个镜像下载。在这种情况下,我几乎可以肯定使用了
-Werror
,如果您从配置脚本中删除任何一个标志,它都会起作用。我刚刚尝试了所有这些,并将结果发布到我的原始问题中。我不确定“Apple GCC”是什么意思–我从源代码中安装了GCC,直接从GNU网站上提供的一个镜像下载。在这种情况下,我几乎可以肯定使用了
-Werror
,如果您从配置脚本中删除任何一个标志,它应该可以工作。我刚刚尝试了所有这些,并将结果发布到我的原始问题。我尝试将修补程序应用于cmd行用户界面请求的文件,但其中许多部分或全部失败(“不兼容版本”)。运行
/configure
不会像以前一样返回任何错误,
make
会像以前一样返回相同的错误。使用特定的修补程序文件和修补说明更新了我的答案。我尝试将修补程序应用于cmd行UI请求的文件,但其中许多部分或全部失败(“不兼容版本”)。运行
/configure
不会像以前一样返回任何错误,并且
make