使用<stdbool.h>在solaris10上构建msgpackpython只在c99编译环境中有效

2024-05-19 03:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Sun编译器在Solaris上构建python模块msgpack-python,但在python中遇到了这个错误/设置.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:Warning:非法选项-d=c99

有谁知道stdbool.h错误是什么以及如何解决它吗。在

谢谢。在


Tags: 模块pycsw编译器include错误msgpackcc
2条回答

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

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

  2. 使用^{} flag-运行命令,这也将在编译器中触发C99模式:

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

或者,您也可以使用GCC编译器(通常安装在/usr/sfw/bin/gcc)来编译这个C模块,它是支持-std=c99标志选项的编译器。如果我记得我的Solaris工作正确,Solaris中包含的^ {CD6}}将使用Sun的{{7CD> },并且链接到系统上的正常^ ^ {CD8}},就像^ {CD9}}将(对于每个编译器的C++版本完全不成立)。在

尝试以下导出:

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

然后再次运行configure脚本,重新编译。我认为它不再需要符合C99标准了。大多数开源软件都需要这个定义来切换系统头的更多开源行为。在

更好地使用pkgsrc编译操作系统软件。它会自动地做这样的把戏。在

相关问题 更多 >

    热门问题