由于-Werror =声明后声明而在python3.4上编译rpy2时出错

时间:2014-08-30 21:47:55

标签: python gcc compiler-errors rpy2 python-3.4

尝试rpy2时,我遇到了编译pip install的错误:

./rpy/rinterface/_rinterface.c:2376:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]

(还有更多喜欢它)

这是Python对编译器的调用:

gcc -pthread -Werror=declaration-after-statement -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DR_INTERFACE_PTRS=1 -DHAVE_POSIX_SIGJMP=1 -DRIF_HAS_RSIGHAND=1 -DCSTACK_DEFNS=1 -DHAS_READLINE=1 -I./rpy/rinterface -I/home/hen/miniconda3/envs/fitts/include/python3.4m -I/usr/share/R/include -c ./rpy/rinterface/_rinterface.c -o build/temp.linux-x86_64-3.4/./rpy/rinterface/_rinterface.o

1 个答案:

答案 0 :(得分:3)

通过一些谷歌搜索,我确定问题是-Werror=declaration-after-statement标志。试图找出这面旗帜的来源。我最终遇到了this Python issue

  

重建3.4模块时遇到错误。这是ISO C90错误,但setup.py明确地将-std=c99添加到gcc参数,实际上它被使用。

     

fifo.h:114:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] uint32_t ofs = fifo->write_count - fifo->write_offset;

     

然而,Py 3.4似乎也为扩展模块添加了-Werror=declaration-after-statement。这不应该发生(在#python中也说Yhg1s。)

在修复程序出现之前,可以通过运行

来解决
export CFLAGS="-Wno-error=declaration-after-statement"

在运行pip installpython setup.py install

之前