在Solaris上编译Ncurses - “编译器或选项对于UNIX 03之前的X / Open应用程序和2001之前的POSIX应用程序无效”?

时间:2011-07-21 10:40:08

标签: solaris compilation ncurses

我正在尝试在Solaris 10(x86)上编译GNU堆栈。

到目前为止,我已成功完成了以下任务:

  • GMP
  • MPFR
  • MPC
  • GCC
  • 的binutils
  • libiconv的
  • 的gettext

我正在尝试构建Ncurses,我遇到了错误:

/db/pub/eq/tools/bin/g++ -I../c++ -I../include -I/db/pub/eq/src/ncurses-5.9/c++ -DHAVE_CONFIG_H   -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 -D_FILE_OFFSET_BITS=64  -DNDEBUG -I. -I../include -I/db/pub/eq/src/ncurses-5.9/c++/../include -I/db/pub/eq/tools/include/ncurses -O2 -c /db/pub/eq/src/ncurses-5.9/c++/cursesf.cc -o ../objects/cursesf.o
<command-line>:0:0: warning: "_XOPEN_SOURCE" redefined [enabled by default]
<built-in>:0:0: note: this is the location of the previous definition
In file included from /usr/include/iso/stdlib_iso.h:30:0,
             from /usr/include/stdlib.h:18,
             from /db/pub/eq/src/ncurses-5.9/c++/internal.h:53,
             from /db/pub/eq/src/ncurses-5.9/c++/cursesf.cc:34:
/db/pub/eq/tools/lib/gcc/i386-pc-solaris2.10/4.6.1/include-fixed/sys/feature_tests.h:341:2: error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications      and pre-2001 POSIX applications"
*** Error code 1
make: Fatal error: Command failed for target `../objects/cursesf.o'
Current working directory /db/pub/eq/src/ncurses-5.9/c++
*** Error code 1
make: Fatal error: Command failed for target `all'

我不太确定上述错误(Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications)的含义,或者如何对其进行问题排查。

我在构建MPC之前曾经看到过这个错误(在gmake check期间),但我不知道它是什么意思,或者如何修复它 - 但是因为它是在检查中,所以没关系。

干杯, 维克多

1 个答案:

答案 0 :(得分:4)

将此修补程序应用于配置脚本:

--- configure.orig  Fri Aug  5 14:28:28 2011
+++ configure       Fri Aug  5 14:31:11 2011
@@ -7246,7 +7246,7 @@
    # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
    ;;
 solaris2.1[0-9]) #(vi
-   cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+   cf_xopen_source="-D__EXTENSIONS__"
    ;;
 solaris2.[1-9]) #(vi
    cf_xopen_source="-D__EXTENSIONS__"

Ncurses 5.6也没有为solaris定义_XOPEN_SOURCE。

干杯