由于clang,Ruby 1.9.3安装无法正常工作

时间:2012-06-28 17:15:15

标签: macos osx-lion rvm clang ruby-1.9.3

我正在尝试使用clang安装Ruby 1.9.3。我尝试了以下内容并且它没有工作:

rvm install 1.9.3-p125 --with-gcc=clang

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

我得到的错误是make log中与readline相关的错误:

readline.c:1499:9: error: use of undeclared identifier 'username_completion_function'; did you mean 'rl_username_completion_function'?
                                    rl_username_completion_function);
                                    ^
readline.c:69:42: note: expanded from macro 'rl_username_completion_function'
# define rl_username_completion_function username_completion_function
                                         ^
/usr/local/include/readline/readline.h:443:14: note: 'rl_username_completion_function' declared here
extern char *rl_username_completion_function PARAMS((const char *, int));
             ^
1 error generated.
make[2]: *** [readline.o] Error 1
make[1]: *** [ext/readline/all] Error 2
make: *** [build-ext] Error 2

以及第一次尝试的这个clang错误:(rvm install 1.9.3-p125 --with-gcc = clang)

clang: error: unsupported option '--with-libyaml'
clang: error: unsupported option '--with-libyaml'

并进行第二次尝试:(rvm install 1.9.3 --with-gcc = clang --with-readline-dir = $ rvm_path / usr)

clang: error: unsupported option '--with-readline'
clang: error: unsupported option '--with-opt-dir=/Users/andrewjl/.rvm/usr'
clang: error: unsupported option '--with-readline'
clang: error: unsupported option '--with-opt-dir=/Users/andrewjl/.rvm/usr'

鉴于我学到了here,我的猜测是clang没有识别我的命令行参数来使用特定的gcc和/或特定的readline目录。

我的RVM是:rvm 1.14.3 (master)

我的铿锵是:

Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix

这是我的海湾合作委员会:

andrewjl$ /usr/bin/gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/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.9~22/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.9.00)

我尝试了here这个方法,但它并不适合我。具体来说,我使用命令行工具安装了Xcode 4.1,并确保更新openssl和readline。有没有人知道我能尝试的其他事情?

2 个答案:

答案 0 :(得分:2)

您的“GCC”仍然是基于LLVM的。安装ruby-1.9.3-p125时,您不需要也可能根本不应该设置--with-gcc = clang,因为RVM现在会自动解决它。

您是否已尝试在没有该选项的情况下安装该ruby?如果您仍然遇到问题,请告诉我您安装的Xcode版本是什么,我们可以从那里开始。 gcc版本4.2.1可以是从4.2.x到4.5 DP2的任何地方。考虑在Freenode IRC中停止#rvm(http://webchat.freenode.net/?channels=rvm),我(Remear)或mpapis可以为您提供更多帮助。

一些澄清信息:

基于标准GCC编译器附带的所有Xcode版本最高可达4.1左右。从Xcode 4.2.x开始,Apple推出了基于LLVM的编译器,并开始逐步淘汰基于GCC的编译器。 Xcode 4.3只附带LLVM编译器,没有GCC。 Ruby 1.8.x需要GCC进行编译。 Ruby 1.9.3-p0对LLVM略有支持,但你很幸运能安装它。 Ruby 1.9.3-p125或更新版本改进了与LLVM编译器的兼容性。

所以这里是您需要安装几乎任何红宝石的细分:

Ruby 1.8.x,Ruby 1.9.3-p0

Xcode 4.1或osx-gcc-installer

Ruby 1.9.3-p125或更新版

Xcode 4.1或osx-gcc-installer

安装了Xcode命令行工具的Xcode 4.2.x或更新版本(除了LLVM之外,这还为您提供了GCC)

答案 1 :(得分:1)

似乎RVM在命令行上改变了一些东西,以下(改变的)格式对我有用:

rvm pkg install readline

接下来是:

rvm install 1.9.3 -C "--with-readline-dir=$HOME/.rvm/usr"