gcc - 在Lion RVM无法安装Ruby - gcc问题

  显示原文与译文双语对照的内容

关于这个问题的大多数问题是由于缺少 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 ( 由于大小而在底部张贴),我尝试了 symlinking 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

时间:

这个答案是多次编辑,现在包含几个替代解决方案。 先尝试简单的"编辑 3"解决方案。

ruby 1.9.3 -p125和更高版本对 clang 有官方支持,所以如果你安装这样的版本,你不应该需要 GCC 。 如果你正在安装旧版本的ruby,请阅读。

要用GCC编译 ruby,你需要一个non-LLVM版本的GCC,它不再包含在 XCode 4.2中。 自己安装( 或者临时降级到 XCode 4.1 ),然后 CC=/usr/local/bin/gcc-4.2 rvm install 1.9.3 --enable-shared ( 将路径替换为 non-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菜单安装command-line工具-> 首选项-> 下载-> 组件。 这是一个 pre-requisite,用于在command-line上进行任何编译,而不仅仅是 ruby 。

注意 2: 如果在执行以下步骤后无法正常工作,请尝试重新启动或者re-login以确保环境正确设置。

注意 3: ruby 版本之前 1.9.3 -p125可能并不总是完全兼容叮当声,如果使用"编辑 3"彻底测试自己的软件解决方案在生产环境中。

好的,我不需要单独安装 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]

注意我的环境如下

操作系统


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

GCC


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中没有传递的问题是固定的( 在提交 1641ceb0 2011 ),但即使在升级到最新的( 通过 rvm get latest ) 之后,仍然没有通过。 使用 .rvmrc 文件是我唯一的方法。

只能在这里回答,因为我不能在原始问题上对Leandro的评论/评论进行投票。 支出天后试图得到这个工作,他的解决方案是最后得到它为我工作:

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


 rvm pkg install readline 

并传递额外参数


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

它已经成功安装。

我将建议 brewrvm requirements 我已经安装了它,我已经安装了最新的Xcode版本 4.4 ( 4F250 )

Homebrew:

如果你使用的是 Homebrew, 你可以安装apple-gcc42和所需的库从 Homebrew/受骗的人:


 brew update
 brew tap homebrew/dupes
 brew install autoconf automake apple-gcc42
 rvm pkg install openssl

这可以与现有的Xcode 4.2 + 安装或者 命令行 工具共存。

你总是可以做到


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

然后如果必要的话


$ brew remove apple-gcc42

或者任何其他通过 brew ( 有关这些 2命令的解释,请参阅文档) 安装的程序,也可以

 
/join #machomebrew

 

在 freenode ( 不是 #homebrew 我认为这是真正的Homebrew 啤酒和相关)

告诉配置使用gcc而不是 gcc-4.2 在 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'

 

我有同样的问题,所以我运行 configure 而选择 gcc 代替 gcc-4.2:


> 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 在你的输出中,我猜你想出了一个)?

...