不能在有RVM - GCC问题的Lion下安装Ruby

关于这个问题的大多数问题都是由于缺少Xcode;我安装了Xcode 4.2。

安装:

rvm install 1.9.3
Installing Ruby from source to: /Users/jamie/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...


ruby-1.9.3-p0 - #fetching
ruby-1.9.3-p0 - #extracted to /Users/jamie/.rvm/src/ruby-1.9.3-p0 (already extracted)
Fetching yaml-0.1.4.tar.gz to /Users/jamie/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/jamie/.rvm/src
Configuring yaml in /Users/jamie/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/jamie/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/jamie/.rvm/usr
ruby-1.9.3-p0 - #configuring
ERROR: Error running ' ./configure --prefix=/Users/jamie/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/jamie/.rvm/usr ', please read /Users/jamie/.rvm/log/ruby-1.9.3-p0/configure.log
ERROR: There has been an error while running configure. Halting the installation.

configure.log:

[2011-11-07 04:32:17]  ./configure --prefix=/Users/jamie/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/jamie/.rvm/usr
configure: WARNING: unrecognized options: --with-libyaml-dir
checking build system type... x86_64-apple-darwin11.2.0
checking host system type... x86_64-apple-darwin11.2.0
checking target system type... x86_64-apple-darwin11.2.0
checking whether the C compiler works... no
configure: error: in `/Users/jamie/.rvm/src/ruby-1.9.3-p0':
configure: error: C compiler cannot create executables
See `config.log' for more details

GCC可用:

gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~1/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~1/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)


ls /usr/bin | grep gcc
gcc
i686-apple-darwin11-llvm-gcc-4.2
llvm-gcc
llvm-gcc-4.2

基于config.log(由于大小,被贴在底部),我尝试将gcc-4.2符号链接到gcc,然后安装:

rvm install 1.9.3
ERROR: The autodetected CC(/usr/bin/gcc-4.2) is LLVM based, it is not yet fully supported by ruby and gems, please read `rvm requirements`, and set CC=/path/to/gcc .

我可以从其他地方获取gcc,但我最关心的是为什么会发生这种情况。难道安装Xcode还不够吗?

config.log:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.


It was created by configure, which was
generated by GNU Autoconf 2.68.  Invocation command line was


$ ./configure --prefix=/Users/jamie/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/jamie/.rvm/usr


## --------- ##
## Platform. ##
## --------- ##


hostname = Wilson.local
uname -m = x86_64
uname -r = 11.2.0
uname -s = Darwin
uname -v = Darwin Kernel Version 11.2.0: Tue Aug  9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64


/usr/bin/uname -p = i386
/bin/uname -X     = unknown


/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = Mach kernel version:
Darwin Kernel Version 11.2.0: Tue Aug  9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64
Kernel configured for up to 4 processors.
4 processors are physically available.
4 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3
Primary memory available: 8.00 gigabytes
Default processor set: 110 tasks, 546 threads, 4 processors
Load average: 1.28, Mach factor: 2.71
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown


PATH: /Users/jamie/.rvm/usr/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/sbin
PATH: /sbin
PATH: /usr/local/bin
PATH: /usr/X11/bin
PATH: /Users/jamie/bin
PATH: /Users/jamie/.rvm/bin
PATH: /Users/jamie/.rvm/bin




## ----------- ##
## Core tests. ##
## ----------- ##


configure:2764: checking build system type
configure:2778: result: x86_64-apple-darwin11.2.0
configure:2849: checking host system type
configure:2862: result: x86_64-apple-darwin11.2.0
configure:2882: checking target system type
configure:2895: result: x86_64-apple-darwin11.2.0
configure:3376: checking for C compiler version
configure:3385: gcc-4.2 --version >&5
./configure: line 3387: gcc-4.2: command not found
configure:3396: $? = 127
configure:3385: gcc-4.2 -v >&5
./configure: line 3387: gcc-4.2: command not found
configure:3396: $? = 127
configure:3385: gcc-4.2 -V >&5
./configure: line 3387: gcc-4.2: command not found
configure:3396: $? = 127
configure:3385: gcc-4.2 -qversion >&5
./configure: line 3387: gcc-4.2: command not found
configure:3396: $? = 127
configure:3416: checking whether the C compiler works
configure:3438: gcc-4.2    conftest.c  >&5
./configure: line 3440: gcc-4.2: command not found
configure:3442: $? = 127
configure:3480: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define CANONICALIZATION_FOR_MATHN 1
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:3485: error: in `/Users/jamie/.rvm/src/ruby-1.9.3-p0':
configure:3487: error: C compiler cannot create executables
See `config.log' for more details


## ---------------- ##
## Cache variables. ##
## ---------------- ##


ac_cv_build=x86_64-apple-darwin11.2.0
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=x86_64-apple-darwin11.2.0
ac_cv_prog_CC=gcc-4.2
ac_cv_target=x86_64-apple-darwin11.2.0


## ----------------- ##
## Output variables. ##
## ----------------- ##


ALLOCA=''
AR=''
ARCHFILE=''
ARCH_FLAG=''
AS=''
ASFLAGS=''
BASERUBY='ruby'
BUILTIN_ENCOBJS=''
BUILTIN_TRANSOBJS=''
BUILTIN_TRANSSRCS=''
CAPITARGET=''
CC='gcc-4.2'
CCDLFLAGS=''
CFLAGS=''
CHDIR=''
COMMON_HEADERS=''
COMMON_LIBS=''
COMMON_MACROS=''
COUTFLAG=''
CP=''
CPP=''
CPPFLAGS=''
CPPOUTFILE=''
CXX='g++-4.2'
CXXFLAGS=''
DEFS=''
DLDFLAGS=''
DLDLIBS=''
DLEXT2=''
DLEXT=''
DLLWRAP=''
DOT=''
DOXYGEN=''
ECHO_C='\c'
ECHO_N=''
ECHO_T=''
EGREP=''
ENABLE_SHARED=''
EXECUTABLE_EXTS=''
EXEEXT=''
EXPORT_PREFIX=''
EXTOUT=''
EXTSTATIC=''
GCC=''
GNU_LD=''
GREP=''
INSTALLDOC=''
INSTALL_DATA=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
LDFLAGS=''
LDSHARED=''
LDSHAREDXX=''
LIBEXT=''
LIBOBJS=''
LIBPATHENV=''
LIBPATHFLAG=''
LIBRUBY=''
LIBRUBYARG=''
LIBRUBYARG_SHARED=''
LIBRUBYARG_STATIC=''
LIBRUBY_A=''
LIBRUBY_ALIASES=''
LIBRUBY_DLDFLAGS=''
LIBRUBY_LDSHARED=''
LIBRUBY_RELATIVE=''
LIBRUBY_SO=''
LIBS=''
LINK_SO=''
LN_S=''
LTLIBOBJS=''
MAINLIBS=''
MAJOR='1'
MAKEDIRS=''
MAKEFILES=''
MANTYPE=''
MINIOBJS=''
MINIRUBY=''
MINOR='9'
MKDIR_P=''
NM=''
NROFF=''
NULLCMD=''
OBJCOPY=''
OBJDUMP=''
OBJEXT=''
OUTFLAG=''
PACKAGE=''
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PKG_CONFIG=''
PREP=''
RANLIB=''
RDOCTARGET=''
RI_BASE_NAME=''
RM=''
RMALL=''
RMDIR=''
RMDIRS=''
RPATHFLAG=''
RUBYW_BASE_NAME='rubyw'
RUBYW_INSTALL_NAME=''
RUBY_BASE_NAME='ruby'
RUBY_INSTALL_NAME=''
RUBY_PROGRAM_VERSION='1.9.3'
RUBY_RELEASE_DATE='2011-10-30'
RUBY_SO_NAME=''
RUNRUBY=''
SET_MAKE=''
SHELL='/bin/sh'
SOLIBS=''
STATIC=''
STRIP=''
SYMBOL_PREFIX=''
TEENY='1'
TEST_RUNNABLE=''
THREAD_MODEL=''
TRY_LINK=''
UNIVERSAL_ARCHNAMES=''
UNIVERSAL_INTS=''
USE_RUBYGEMS=''
WERRORFLAG=''
WINDRES=''
XCFLAGS=''
XLDFLAGS=''
XRUBY=''
XRUBY_LIBDIR=''
XRUBY_RUBYHDRDIR=''
XRUBY_RUBYLIBDIR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_OBJCOPY=''
ac_ct_OBJDUMP=''
arch=''
bindir='${exec_prefix}/bin'
build='x86_64-apple-darwin11.2.0'
build_alias=''
build_cpu='x86_64'
build_os='darwin11.2.0'
build_vendor='apple'
cflags=' ${optflags} ${debugflags} ${warnflags}'
configure_args=''
cppflags=''
cxxflags=' ${optflags} ${debugflags} ${warnflags}'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
debugflags=''
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
exec=''
exec_prefix='NONE'
host='x86_64-apple-darwin11.2.0'
host_alias=''
host_cpu='x86_64'
host_os='darwin11.2.0'
host_vendor='apple'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
oldincludedir='/usr/include'
optflags=''
pdfdir='${docdir}'
prefix='/Users/jamie/.rvm/rubies/ruby-1.9.3-p0'
program_transform_name='s&^&&'
psdir='${docdir}'
ridir=''
ruby_pc=''
ruby_version=''
rubyhdrdir=''
rubylibprefix=''
rubyw_install_name=''
sbindir='${exec_prefix}/sbin'
setup=''
sharedstatedir='${prefix}/com'
sitearch=''
sitedir=''
sitehdrdir=''
sysconfdir='${prefix}/etc'
target='x86_64-apple-darwin11.2.0'
target_alias=''
target_cpu='x86_64'
target_os='darwin11.2.0'
target_vendor='apple'
try_header=''
vendordir=''
vendorhdrdir=''
warnflags=''


## ----------- ##
## confdefs.h. ##
## ----------- ##


/* confdefs.h */
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define PACKAGE_URL ""
#define CANONICALIZATION_FOR_MATHN 1


configure: exit 77
78276 次浏览

这个答案被编辑了多次,现在包含了几个替代解决方案。首先尝试简单的“编辑3”解决方案。

Ruby 1.9.3-p125及以后版本对clang有官方支持,所以如果你正在安装这样的版本,你不应该需要GCC。如果您正在安装较旧版本的Ruby,请继续阅读。

要用GCC编译Ruby,你需要一个非llvm版本的GCC,它不再包含在Xcode 4.2中。自己安装它(或暂时降级到Xcode 4.1),然后执行CC=/usr/local/bin/gcc-4.2 rvm install 1.9.3 --enable-shared(替换到非llvm gcc的路径)。

编辑:https://github.com/kennethreitz/osx-gcc-installer/downloads可能有助于安装GCC。运行rvm requirements也可以得到一些信息。

编辑2:为了一个更简单的解决方案,你可以尝试将--with-gcc=clang添加到configure的参数中,以便Ruby使用clang而不是GCC。

编辑3: rvm install 1.9.3 --with-gcc=clang为你做这个。

注意:对于当前版本的Xcode,你需要从Xcode菜单中单独安装命令行工具->偏好→下载→组件。这是在命令行上使用Xcode进行任何编译的先决条件,而不仅仅是Ruby。

注2:如果在执行这些步骤后仍然无法正常工作,请尝试重新启动或重新登录以确保正确设置了环境。

注3:1.9.3-p125之前的Ruby版本可能并不总是与clang完全兼容,因此如果在生产环境中使用“edit 3”解决方案,请彻底测试您的软件。

堆栈溢出总结

我试图在App Store的Xcode上安装一个干净的Lion

我一直得到这样的错误: 提供的CC(/usr/bin/gcc)是基于LLVM的

bash-3.2$ rvm install 1.9.3
ERROR: The provided CC(/usr/bin/gcc) is LLVM based, it is not yet fully supported by ruby and gems, please read `rvm requirements`.
< p > < br > 2天后终于让它与这两行工作:

http://stackoverflow.com/questions/8000145/ruby-rvm-llvm-and-mysql


bash-3.2$ rvm get head
bash-3.2$ CC=/usr/bin/gcc-4.2 rvm install 1.9.3 --enable-shared

在此之前,我已经尝试了Ruby和Lion上的每一篇stackoverflow文章,所以这样做可能已经完成了一些设置,帮助上述2步工作:

我尝试的事情包括:

运行安装Xcode。app(我已经从app Store下载了-运行这个会进一步安装)

安装

https://github.com/kennethreitz/osx-gcc-installer/downloads may help for installing GCC.

设置CC

更多/用户/ / . bash_profile

bash-3.2$ more /Users/<USERNAME>/.bash_profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
export CC=/usr/share/TargetConfigs/bin/gcc

第一行来自SiriProxy安装指令 https://github.com/plamoni/SiriProxy < / p >

二线出口CC似乎从来没有工作过。所以不要添加。

每个指向都有很多版本 我最终使用CC=/usr/bin/gcc-4.2 rvm install 1.9.3——enable-shared

试一试:

RVM安装1.9.3——force-autoconf

只需告诉configure使用gcc而不是gcc-4.2 on Lion (Mac OSX 10.7.2)

从源代码编译ruby-1.9.3

你可以在配置输出中看到:

configure:3385: gcc-4.2 --version >&5
./configure: line 3387: gcc-4.2: command not found

如果你搜索config.log,你会看到:

CC='gcc-4.2'

我也有同样的问题,所以我在选择gcc而不是gcc-4.2时运行configure:

> CC=gcc ./configure --prefix=/usr/local
> make
> make install
> ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

(我不确定你的输出中的configure: WARNING: unrecognized options: --with-libyaml-dir是什么,我猜你算出来了?)

好吧,我不必单独安装gcc-4.2,我使用了在Xcode中交付的一个,但我有一个问题,--with-gcc=clang没有被传递。添加以下行到我的.rvmrc:

export rvm_configure_flags="--with-gcc=clang"

按要求工作

rvm upgrade ruby-1.9.2-p290 ruby-1.9.3-p125
...
ruby-1.9.3-p125 - #extracted to /Users/leif/.rvm/src/ruby-1.9.3-p125 (already extracted)
ruby-1.9.3-p125 - #configuring
ruby-1.9.3-p125 - #compiling
ruby-1.9.3-p125 - #installing
....
Successfully migrated ruby-1.9.2-p290 to ruby-1.9.3-p125
Upgrade complete!


bang:$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]

注意我的env是下面的

操作系统

Darwin bang.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64

Xcode

Xcode 4.2.1 Build 4D502

海湾合作委员会

i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)


lrwxr-xr-x  1 root  wheel  12 22 Dec 21:30 /usr/bin/gcc -> llvm-gcc-4.2

我尝试使用在命令行上将--with-gcc=clang传递给rvm升级命令的答案,但它不起作用,它似乎没有从rvm传递到配置。显然,RVM中的参数不被传递给configure的问题已经修复(在2011年的commit 1641ceb0中),但即使在将RVM升级到最新(通过rvm get latest)之后,它仍然没有被传递。使用.rvmrc文件是唯一适合我的方法。

rvm install 1.9.3 --with-gcc=clang

为我工作。这是在全新的Lion上使用Xcode(没有“传统的”GCC)。

只是在这里回答,因为我不能投票/评论莱安德罗对原始问题的评论。在花了几天的时间试图让这个工作后,他的解决方案是最后让它为我工作:

edit3没有为我工作(Xcode 4.2.1),但在安装readline

 rvm pkg install readline

并传递一个额外的参数

rvm install 1.9.3 --with-gcc=clang --with-readline-dir=$rvm_path/usr

安装成功。

下载并使用JewelryBox Mac OS的官方RVM GUI。在“添加Ruby”中选择您的Ruby版本。在安装之前,确保你选择了“Use Clang”,就像这个线程中接受答案的编辑3所建议的那样。

同样的问题,因为我使用的是Xcode 4.3.2和Lion 10.7.3,几天前我换了笔记本电脑,然后从旧笔记本电脑上转移了所有内容。显然,有些二进制文件无法传输,比如gcc。

然后我做了以下事情:

  1. 将Xcode 4.3.2拖拽到垃圾桶
  2. https://github.com/kennethreitz/osx-gcc-installer/downloads下载gcc安装包v2
  3. 安装它
  4. 然后安装rvm 1.9.2

你可以尝试安装Xcode的命令行工具,它包括GCC, LLMV和其他在Xcode 4.2及更高版本中不包含的工具。

我将从rvm requirements建议酿造,我已经安装了它,而我已经安装了最新的Xcode版本4.4 (4F250)

自制程序:

如果您使用的是Homebrew,您可以安装apple-gcc42和 从homebrew/dupes需要的库:

  brew update
brew tap homebrew/dupes
brew install autoconf automake apple-gcc42
rvm pkg install openssl
这可以与现有的Xcode 4.2+安装或 Xcode的命令行工具

你总是可以做到的

$ brew cleanup [specific-formula or without-formula to clean all]

如果有必要的话

$ brew remove apple-gcc42

或者任何其他通过brew安装的程序(参见文档中关于这两个命令的解释),也可以

/join #machomebrew

在freenode(不是#自制啤酒,我认为这是真正的自制啤酒和相关)

确保您使用的是最新的rvm。使用rvm 1.10.0以上都不适合我。此外,rvm get latest错误地告诉我“你已经有了最新的版本!”所以我不得不rvm implode并重新安装rvm(1.15.4),这自动给了我ruby 1.9.3-p194。

对我来说,上面这些方法都不奏效。最终起作用的是

rvm get head
rm -rf  /usr/local/lib/libsqlite3*
CC=/usr/bin/gcc-4.2 rvm install 1.9.3 --enable-shared

特殊的技巧是删除libsqllite,根据构建日志,它缺少所需的64位体系结构或其他东西。

最近的一个更简单的解决方案是只使用railsinstaller.org。它有osx-gcc打包在里面,所以下载和安装非常简单。在最近摆弄了一个新的shell之后,我弄脏了我的rails环境。在尝试了上述许多解决方案之后(我可能会补充说,这些解决方案以前是有效的),我终于按照以下步骤让事情重新开始工作:

  • 破坏你的本地环境,(考虑rvm内爆和卸载Xcode)
  • railsinstaller.org下载pkg
  • 双击并安装

安装程序需要一些时间来安装git、rvm、homebrew和其他一些好东西。

使用brew,你可以在一行程序中安装ruby:

brew install ruby193

在OS X 10.8.4上为我开箱即用。(如果你想要2.0版本,只需运行brew install ruby即可)

更一般地说,brew search ruby显示了不同的可用回购,如果你想要更具体,你可以使用brew versions ruby并签出特定的版本。

你可能需要Xcode和命令行工具,但brew的设置会为你检查这一切。