0

我正在尝试使用 Sun 编译器在 Solaris 上构建 python 模块msgpack-python,并且在 python ./setup.py 构建期间收到此错误:

/opt/SUNWspro/bin/cc -DNDEBUG -O -xO3 -m32 -xarch=sparc -I/opt/csw/include -xcode=pic32 -I/opt/csw/include/python2.6 -c msgpack/_msgpack.c -o build/temp.solaris-2.10-sun4v-2.6/msgpack/_msgpack.o
"/usr/include/stdbool.h", line 42: #error: "Use of <stdbool.h> is valid only in a c99 compilation environment."

我还尝试通过添加'-std=c99' 来进行编译,如下所述:Node.JS on Solaris

但最终得到:

cc: 警告:非法选项 -d=c99

任何人都对这个 stdbool.h 错误是什么以及如何解决它有任何想法。

谢谢。

4

2 回答 2

0

我不知道您正在运行哪个版本的 Sun Studio(这对于它是否支持您正在使用的 Solaris 10 版本很重要),但要获得 C99 模式,您可以执行以下两项操作之一:

  1. 运行命令/opt/SUNWspro/bin/c99- 这是一个包装器可执行文件,它将以 C99 模式启动 Sun CC 编译器。

  2. -xc99使用标志运行您的命令- 这也将在编译器中触发 C99 模式:

    /opt/SUNWspro/bin/cc -xc99 ...

或者,您也可以使用 GCC 编译器(通常安装在 中/usr/sfw/bin/gcc)来编译这个 C 模块,它是支持-std=c99flag 选项的编译器。如果我记得我的 Solaris 工作正常,那么gccSolaris 包含的将使用 Sun 的ld并链接libc.so到系统上的正常链接cc(对于每个编译器的 C++ 版本根本不正确)。

于 2012-07-13T00:26:44.363 回答
0

尝试导出以下内容:

export CFLAGS="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -features=extensions"

然后再次运行configure脚本,重新编译。我认为它不再需要 C99 合规性。大多数 OpenSource SW 需要此定义来切换系统头文件的更多 OpenSource 行为。

更好的使用pkgsrc来编译 OS 软件。它会自动完成这些技巧。

于 2012-07-14T22:07:17.727 回答