如何在OSX Lion上安装(构建)Ruby 1.9.3?

12

我一直在尝试在我的Mac,OSX Lion上安装Ruby。我已经安装了XCode、GCC、Readline、Homebrew和JewelryBox,但是我不知道出了什么问题。有什么建议吗?

这是我的终端显示的内容:

hugo-pc:ruby-1.9.3-p125 squantowalks$ rvm install 1.9.3
Fetching yaml-0.1.4.tar.gz to /Users/squantowalks/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/squantowalks/.rvm/src
Error running 'tar xmzf /Users/squantowalks/.rvm/archives/yaml-0.1.4.tar.gz -C /Users/squantowalks/.rvm/src ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/extract.log
Configuring yaml in /Users/squantowalks/.rvm/src/yaml-0.1.4.
Error running ' ./configure --prefix="/Users/squantowalks/.rvm/usr"  ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/configure.log
Compiling yaml in /Users/squantowalks/.rvm/src/yaml-0.1.4.
Error running 'make ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/make.log
Installing Ruby from source to: /Users/squantowalks/.rvm/rubies/ruby-1.9.3-p125, this may take a while depending on your cpu(s)...

ruby-1.9.3-p125 - #fetching 
ruby-1.9.3-p125 - #extracted to /Users/squantowalks/.rvm/src/ruby-1.9.3-p125 (already extracted)
ruby-1.9.3-p125 - #configuring 
ruby-1.9.3-p125 - #compiling 
Error running 'make ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/make.log
There has been an error while running make. Halting the installation.

这是控制台日志:

[2012-03-08 18:20:17] make 
    CC = clang
    LD = ld
    LDSHARED = clang -dynamiclib -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe  -L. -L/usr/local/lib
    CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe 
    XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
    CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I. -I.ext/include/x86_64-darwin11.3.0 -I./include -I.
    DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/squantowalks/.rvm/rubies/ruby-1.9.3-p125/lib/libruby.1.9.1.dylib -current_version 1.9.1 -compatibility_version 1.9.1 -Wl,-unexported_symbol,_Init_* -Wl,-unexported_symbol,*_threadptr_*  -Wl,-u,_objc_msgSend   
    SOLIBS = 
linking miniruby
<internal:prelude>:1: [BUG] Bus Error
ruby 1.9.3p125 (2012-02-16 revision 34643) [universal.x86_64-darwin11.3.0]

-- Control frame information -----------------------------------------------
c:0003 p:0002 s:0006 b:0006 l:000005 d:000005 TOP    <internal:prelude>:1
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0025e8 d:0025e8 TOP   

-- Ruby level backtrace information ----------------------------------------
<internal:prelude>:1:in `<compiled>'

-- C level backtrace information -------------------------------------------

   See Crash Report log file under ~/Library/Logs/CrashReporter or
   /Library/Logs/CrashReporter, for the more detail of.

-- Other runtime information -----------------------------------------------

* Loaded script: ./miniruby

* Loaded features:

    0 enumerator.so

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

make: *** [.rbconfig.time] Abort trap: 6

谢谢 :)

更新:安装了macports和苹果的4.2 gcc(感谢大家),我得到了以下结果:

hugo-pc:bin squantowalks$ CC=/opt/local/bin/gcc-apple-4.2 rvm install 1.9.3Fetching yaml-0.1.4.tar.gz to /Users/squantowalks/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/squantowalks/.rvm/src
Error running 'tar xmzf /Users/squantowalks/.rvm/archives/yaml-0.1.4.tar.gz -C /Users/squantowalks/.rvm/src ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/extract.log
Configuring yaml in /Users/squantowalks/.rvm/src/yaml-0.1.4.
Error running ' ./configure --prefix="/Users/squantowalks/.rvm/usr"  ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/configure.log
Compiling yaml in /Users/squantowalks/.rvm/src/yaml-0.1.4.
Error running 'make ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/yaml/make.log
Installing Ruby from source to: /Users/squantowalks/.rvm/rubies/ruby-1.9.3-p125, this may take a while depending on your cpu(s)...

ruby-1.9.3-p125 - #fetching 
ruby-1.9.3-p125 - #extracted to /Users/squantowalks/.rvm/src/ruby-1.9.3-p125 (already extracted)
ruby-1.9.3-p125 - #configuring 
ruby-1.9.3-p125 - #compiling 
Error running 'make ', please read /Users/squantowalks/.rvm/log/ruby-1.9.3-p125/make.log
There has been an error while running make. Halting the installation.

这是控制台日志:

[2012-03-08 20:05:01] make 
    CC = /opt/local/bin/i686-apple-darwin11-gcc-apple-4.2.1
    LD = ld
    LDSHARED = /opt/local/bin/i686-apple-darwin11-gcc-apple-4.2.1 -dynamiclib -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe  -L. -L/usr/local/lib
    CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe 
    XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
    CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I. -I.ext/include/i386-darwin11.3.0 -I./include -I.
    DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/squantowalks/.rvm/rubies/ruby-1.9.3-p125/lib/libruby.1.9.1.dylib -current_version 1.9.1 -compatibility_version 1.9.1 -Wl,-unexported_symbol,_Init_* -Wl,-unexported_symbol,*_threadptr_*  -Wl,-u,_objc_msgSend   
    SOLIBS = 
linking miniruby
ld: warning: ignoring file dmyext.o, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols for architecture i386:
  "_Init_ext", referenced from:
      _require_libraries in ruby.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make: *** [miniruby] Error 1

make: *** [miniruby] Error 1
he architecture being linked (x86_64)
ld: warning: ignoring file miniprelude.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file array.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file bignum.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file class.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file compar.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file complex.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file dir.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file dln_find.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file enum.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file enumerator.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file error.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file eval.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file load.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file proc.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file file.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file gc.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file hash.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file inits.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file io.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file marshal.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file math.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file node.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file numeric.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file object.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file pack.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file parse.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file process.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file random.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file range.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file rational.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file re.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regcomp.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regenc.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regerror.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regexec.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regparse.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file regsyntax.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file ruby.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file safe.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file signal.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file sprintf.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file st.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file strftime.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file string.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file struct.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file time.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file transcode.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file util.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file variable.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file compile.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file debug.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file iseq.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file vm.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file vm_dump.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file thread.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file cont.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file ascii.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file us_ascii.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file unicode.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file utf_8.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file newline.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: ignoring file setproctitle.o, file was built for i386 which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [miniruby] Error 1

有什么想法?

编辑:Jared。当我添加 --with-gcc=clang 时,日志看起来像这样:

[2012-03-08 21:20:12] make 
    CC = clang
    LD = ld
    LDSHARED = clang -dynamiclib
    CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe 
    XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
    CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I. -I.ext/include/x86_64-darwin11.3.0 -I./include -I.
    DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/squantowalks/.rvm/rubies/ruby-1.9.3-p125/lib/libruby.1.9.1.dylib -current_version 1.9.1 -compatibility_version 1.9.1 -Wl,-unexported_symbol,_Init_* -Wl,-unexported_symbol,*_threadptr_*  -Wl,-u,_objc_msgSend   
    SOLIBS = 
compiling main.c
compiling dmydln.c
compiling dmyencoding.c
compiling version.c
compiling dmyversion.c
compiling miniprelude.c
compiling array.c
compiling bignum.c
compiling class.c
compiling compar.c
compiling complex.c
compiling dir.c
compiling dln_find.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling load.c
compiling proc.c
compiling file.c
compiling gc.c
compiling hash.c
compiling inits.c
compiling io.c
io.c:997:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:1953:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:1975:5: warning: expression result unused [-Wunused-value]
    NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:2409:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:2452:5: warning: expression result unused [-Wunused-value]
    NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:2491:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:2515:5: warning: expression result unused [-Wunused-value]
    NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:2652:2: warning: expression result unused [-Wunused-value]
        NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:2662:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:3012:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:3057:5: warning: expression result unused [-Wunused-value]
    NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:3172:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:3213:5: warning: expression result unused [-Wunused-value]
    NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:3417:2: warning: expression result unused [-Wunused-value]
        SET_BINARY_MODE(fptr);
        ^~~~~~~~~~~~~~~~~~~~~
io.c:330:31: note: instantiated from:
#define SET_BINARY_MODE(fptr) 0
                              ^
io.c:3437:2: warning: expression result unused [-Wunused-value]
        NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:331:52: note: instantiated from:
#define NEED_NEWLINE_DECORATOR_ON_READ_CHECK(fptr) 0
                                                   ^
io.c:4173:5: warning: expression result unused [-Wunused-value]
    SET_BINARY_MODE_WITH_SEEK_CUR(fptr);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:333:45: note: instantiated from:
#define SET_BINARY_MODE_WITH_SEEK_CUR(fptr) 0
                                            ^
io.c:4696:2: warning: expression result unused [-Wunused-value]
        SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
io.c:4743:2: warning: expression result unused [-Wunused-value]
        SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
io.c:8236:2: warning: expression result unused [-Wunused-value]
        SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
io.c:8243:6: warning: expression result unused [-Wunused-value]
            SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
io.c:8250:3: warning: expression result unused [-Wunused-value]
                SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
io.c:8255:3: warning: expression result unused [-Wunused-value]
                SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c:332:64: note: instantiated from:
#define SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags) 0
                                                               ^
22 warnings generated.
compiling marshal.c
compiling math.c
compiling node.c
compiling numeric.c
compiling object.c
compiling pack.c
compiling parse.c
compiling process.c
compiling random.c
compiling range.c
compiling rational.c
compiling re.c
compiling regcomp.c
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
compiling regsyntax.c
compiling ruby.c
compiling safe.c
compiling signal.c
compiling sprintf.c
compiling st.c
compiling strftime.c
compiling string.c
compiling struct.c
compiling time.c
compiling transcode.c
compiling util.c
compiling variable.c
compiling compile.c
compiling debug.c
compiling iseq.c
compiling vm.c
compiling vm_dump.c
compiling thread.c
compiling cont.c
compiling ./enc/ascii.c
compiling ./enc/us_ascii.c
compiling ./enc/unicode.c
compiling ./enc/utf_8.c
compiling newline.c
compiling ./missing/setproctitle.c
linking miniruby
<internal:prelude>:1: [BUG] Bus Error
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]

-- Control frame information -----------------------------------------------
c:0003 p:0002 s:0006 b:0006 l:000005 d:000005 TOP    <internal:prelude>:1
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:000e28 d:000e28 TOP   

-- Ruby level backtrace information ----------------------------------------
<internal:prelude>:1:in `<compiled>'

-- C level backtrace information -------------------------------------------

   See Crash Report log file under ~/Library/Logs/CrashReporter or
   /Library/Logs/CrashReporter, for the more detail of.

-- Other runtime information -----------------------------------------------

* Loaded script: ./miniruby

* Loaded features:

    0 enumerator.so

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

make: *** [.rbconfig.time] Abort trap: 6

编辑:感谢大家的帮助: ),我最终算是弄明白了。以下是我的操作摘要:

(如果您不熟悉命令行,则http://jewelrybox.unfiniti.com/是一个福音)。

  1. 安装RVM(https://rvm.beginrescueend.com/) 它可以在一台计算机上同时管理多个Ruby版本(仅适用于mac / linux)。创建文件夹,使不同版本的Ruby可以独立工作(根据我的理解)。
  2. 获取XCode(https://developer.apple.com/xcode/) 需要将代码编译在一起。但是,您还需要gcc,它不随最新版本的XCode捆绑提供。所以....

  3. 前往此处(https://developer.apple.com/downloads/index.action)并下载“Command Line Tools For XCode”。运行起来很简单明了。

  4. 安装Macports(http://www.macports.org/install.php),以便我可以...

  5. 通过终端安装make(port install make)。不知道它是做什么的,但在安装之前终端会报错,在安装之后则没有错误。

现在我们可以开始了:)

运行(rvm install 1.9.3) 等一会儿。这需要一些时间。

然后(rvm 1.9.3 --default)

然后(gem install rails) 安装Ruby on Rails。这也需要一段时间。

一旦我设置好了rails 3,我就创建了一个测试应用程序。 (rails new tester)-构建目录 (cd tester)-移动到新目录

(rails server)-设置服务器

然后上网,并访问(http://localhost:3000)。如果一切顺利,您应该在浏览器中看到欢迎使用rails。


你的日志文件在"~/Library/Logs/CrashReporter"或"/Library/Logs/CrashReporter"下吗? - Eric
哦,不是的。不过我有一个日志文件夹。谢谢 :) - Squanto
请尝试按照[我在“使用Xcode 4.3.1更新Mac上的Ruby时出现问题”的问题中的回答][SO]中所述步骤操作,并告知结果。我猜重要的一点是使用rvm安装iconv。 [SO]: https://dev59.com/92kw5IYBdhLWcg3wx9eC#9651747 最近,当我使用上述步骤进行安装时,就没有像这样的问题了。我还尝试过osx-gcc-installed ,但在我的情况下不起作用。 - shigeya
4个回答

14

我自己遇到了这个问题,似乎是ruby-1.9.3-125与clang的兼容性问题。一旦使用gcc编译它就可以正常工作了。

检查确保你已经安装了实际的gcc,可以用which gcc-4.2命令来查看。如果没有,你需要安装Xcode或类似于os x gcc installer的东西。如果已经安装,运行rvm install 1.9.3 --with-gcc=gcc-4.2命令对我很有帮助。


在尝试了以上所有答案之后,这些指令是我在2012年3月21日唯一有效的。FYI,我使用的是Xcode 4.3.1,Lion 10.7.3,并且像Alex建议的那样安装了osx gcc。 - Rob S.
我尝试过C = /path/to/apple-gcc-4.2 rvm安装1.9.3但无效,但这对我有效。谢谢。 - ahmy

5
你理论上可以使用现代化的XCode自带的clang编译器来构建Ruby 1.9.3,但它并没有得到官方支持。考虑到你遇到了一个段错误,我的猜测是你遇到了一些与配对相关的错误。
相反,安装苹果GCC 4.2 - 应该是apple-gcc42brew - 然后使用CC=/path/to/apple-gcc-4.2 rvm install 1.9.3进行安装即可。

дҪ йңҖиҰҒдҪҝз”ЁHomebrewжқҘе®үиЈ…apple-gcc42зј–иҜ‘еҷЁпјҢиҖҢдёҚжҳҜRVMгҖӮ然еҗҺеңЁRVMе®үиЈ…Rubyж—¶дҪҝз”Ёе®ғжқҘзј–иҜ‘гҖӮ - Daniel Pittman
这不是真的,LLVM和clang从1.9.3-p125开始得到支持 - Andrew Marshall
您要求使用 '/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/libexec/gcc/i686-apple-darwin11/4.2.1' 进行构建,但它不在您的路径中。(我看到它确实安装在那里。嗯) - Squanto
@DanielPittman 好吧,"官方"并不一定意味着"始终正常工作" ;) - Andrew Marshall
我使用MacPorts,所以对我来说只需要sudo port install apple-gcc42; CC=/opt/local/bin/apple-gcc42 rvm install ...。我不知道在Homebrew中使其工作的正确方法是什么,尽管我相信有一种方法可以做到。 - Daniel Pittman
显示剩余2条评论

5
自Ruby 1.9.3p-125开始,Clang已经得到了官方支持,因此您只需执行以下操作即可:
rvm install 1.9.3 --with-gcc=clang

很奇怪,我得到了一个错误:运行'make'时出错,请阅读/Users/squantowalks/.rvm/log/ruby-1.9.3-p125/make.log。在运行make时发生了错误。停止安装。 - Squanto
不幸的是,这对我来说不起作用,出现了相同的错误。有人能编译它吗? - Dmytrii Nagirniak
抱歉,不确定为什么它不起作用。你可能也需要使用 sudo - jaredonline
抱歉 @Squanto,我没有更多的建议了。在 Lion 上添加 --with-gcc=clang 标签对我有用。 - jaredonline
谢谢你的帮助,我终于搞定了。我在原帖的结尾写下了我的做法,供其他需要的人参考。 - Squanto

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接