C++ GCC-4.9无法在OS X 10.9.2中使用Rbenv生成Ruby 2.1.1
我在这里不太了解杰克,因为我不了解C和类似的编译器,除了根据图坦卡蒙的说法,我读过-我已经在家里安装了gcc-4.9,并将它链接起来,在我的.bash_配置文件中有cc=gcc-4.9-希望这能让我安装Ruby 2.1.1,因为以前的尝试失败了,我抱怨如下:C++ GCC-4.9无法在OS X 10.9.2中使用Rbenv生成Ruby 2.1.1,c++,ruby,compiler-construction,rbenv,gcc4.9,C++,Ruby,Compiler Construction,Rbenv,Gcc4.9,我在这里不太了解杰克,因为我不了解C和类似的编译器,除了根据图坦卡蒙的说法,我读过-我已经在家里安装了gcc-4.9,并将它链接起来,在我的.bash_配置文件中有cc=gcc-4.9-希望这能让我安装Ruby 2.1.1,因为以前的尝试失败了,我抱怨如下: note: unrestricted unions only available with -std=c++11 or -std=gnu++11 我访问了gcc站点,看到4.9包含了c++11支持,所以我不明白为什么它不能按照上面的错误和
note: unrestricted unions only available with -std=c++11 or -std=gnu++11
我访问了gcc站点,看到4.9包含了c++11支持,所以我不明白为什么它不能按照上面的错误和下面的完整错误输出生成Ruby:
make
CC = /usr/local/bin/g++-4.9
LD = ld
LDSHARED = /usr/local/bin/g++-4.9 -dynamic -bundle
CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -pipe
XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE
CPPFLAGS = -I/usr/local/Cellar/openssl/1.0.1g/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -I. -I.ext/include/x86_64-darwin13.0 -I./include -I.
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/usr/local/Cellar/openssl/1.0.1g/lib -fstack-protector -Wl,-u,_objc_msgSend -pie -framework CoreFoundation
SOLIBS = -lgmp
Using built-in specs.
COLLECT_GCC=/usr/local/bin/g++-4.9
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc49/4.9.0/libexec/gcc/x86_64-apple-darwin13.1.0/4.9.0/lto-wrapper
Target: x86_64-apple-darwin13.1.0
Configured with: ../configure --build=x86_64-apple-darwin13.1.0 --prefix=/usr/local/Cellar/gcc49/4.9.0 --enable-languages=c,c++,objc,obj-c++ --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp4 --with-mpfr=/usr/local/opt/mpfr2 --with-mpc=/usr/local/opt/libmpc08 --with-cloog=/usr/local/opt/cloog018 --with-isl=/usr/local/opt/isl011 --with-system-zlib --enable-version-specific-runtime-libs --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --disable-werror --enable-plugin --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.0 (GCC)
compiling miniprelude.c
In file included from vm_core.h:24:0,
from miniprelude.c:8:
method.h:84:19: error: member 'rb_method_attr_t rb_method_definition_struct::<anonymous union>::attr' with copy assignment operator not allowed in union
rb_method_attr_t attr;
^
method.h:84:19: note: unrestricted unions only available with -std=c++11 or -std=gnu++11
In file included from miniprelude.c:8:0:
vm_core.h:674:59: error: use of enum 'iseq_type' without previous declaration
VALUE rb_iseq_new(NODE*, VALUE, VALUE, VALUE, VALUE, enum iseq_type);
^
vm_core.h:677:76: error: use of enum 'iseq_type' without previous declaration
VALUE rb_iseq_new_with_bopt(NODE*, VALUE, VALUE, VALUE, VALUE, VALUE, enum iseq_type, VALUE);
^
vm_core.h:678:75: error: use of enum 'iseq_type' without previous declaration
VALUE rb_iseq_new_with_opt(NODE*, VALUE, VALUE, VALUE, VALUE, VALUE, enum iseq_type, const rb_compile_option_t*);
^
make: *** [miniprelude.o] Error 1
我通过自制程序安装了Rbenv,因此它的bin不在~./Rbenv中,而是在我的路径中,并且由自制程序从以下位置链接到sym:
/usr/local/bin/rbenv -> ../Cellar/rbenv/0.4.0/bin/rbenv
我看不到任何关于这一点的抱怨,这让我觉得我可能使用了错误的C编译器,但我没有看到其他人有同样的错误,他们对自制的gcc-4.9或apple-gcc42很满意,但老实说,我不知道如何决定使用哪一个
感谢您的帮助,因为我在这方面浪费了太多时间,而没有真正开发web应用程序
谢谢错误消息
note: unrestricted unions only available with -std=c++11 or -std=gnu++11
表示只有在gcc或g++以选项-std=c++11或-std=gnu++11启动时,某些功能才可用
因此,GCC4.9包括c++11支持,但默认情况下不启用它。添加命令行选项-std=c++11以启用支持。此类选项通常包含在CFLAGS变量中。或者你甚至可以尝试将其添加到你的CC中
我认为Ruby的配置脚本可能有错误。这个脚本应该检查所有需要的特性,并为CFLAGS创建一组正确的标志,但在您的情况下,它无法将-std=c++11添加到标志中。为什么它要尝试使用g++?为什么您要尝试使用GCC?只需使用clang,我怀疑构建应该使用gcc而不是g++。据我所知,露比是用C.@ OSGX编写的:谢谢,我应该已经提到我已经尝试安装GCcc49:BREW安装GCCS49使能语言= C、C++、C++ 11,但这没有帮助。那么,我做错了?我应该这样重新安装吗?brew安装gcc49-启用语言=std=c++11?很抱歉,我在这里没有深度。@kec谢谢,但是我看到的所有Ruby安装tut都是指安装gcc,而不是g++,但是说实话,我甚至不知道它们之间的区别。我现在就用谷歌“安装ruby g++”,但我认为osgx可能更正确。@user3591456:没错,所以你应该使用gcc,而不是g++,这正是你正在做的。看来,您正在尝试用G++编译Ruby,它是GCC编译器套件的C++编译器。但据我所知,Ruby是用C编写的,这意味着您应该使用gcc,这是gcc套件附带的C编译器。@kec谢谢,我第一次尝试使用gcc4.9制作Ruby,除了指向自制openssl目录外,没有任何配置选项。所以我很困惑-我如何配置gcc只使用C?
note: unrestricted unions only available with -std=c++11 or -std=gnu++11