我正在尝试使用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错误是什么,以及如何解决它。
谢谢。
发布于 2012-07-13 08:26:44
我不知道您正在运行哪个版本的Sun Studio (当涉及到它是否支持您正在使用的Solaris10发行版时,这一点很重要),但是要获得C99模式,您可以执行以下两项操作之一:
/opt/SUNWspro/bin/c99 -这是一个包装可执行文件,它将在C99模式下启动Sun编译器。-xc99 flag运行您的命令-这也将在编译器中触发C99模式:/opt/SUNWspro/bin/cc -xc99 ...
或者,您也可以使用支持-std=c99标志选项的编译器-- GCC编译器(通常安装在/usr/sfw/bin/gcc中)来编译此C模块。如果我没记错的话,包含在Solaris中的gcc将使用Sun的ld并链接到系统上的普通libc.so,就像cc一样(对于每个编译器的C++版本来说都不是这样的)。
发布于 2012-07-15 06:07:18
尝试导出以下内容:
export CFLAGS="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -features=extensions"然后再次运行configure脚本,重新编译。我认为它不再需要C99合规性。大多数OpenSource软件都需要这个定义来切换更多系统头的OpenSource行为。
更好地使用pkgsrc来编译操作系统软件。它将自动完成这些技巧。
https://stackoverflow.com/questions/11462527
复制相似问题