1

我正在尝试使用 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 日志中与 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'

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

我的 RVM 是:rvm 1.14.3 (master)

我的 Clang 是:

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)

我在这里尝试了该方法,但它对我不起作用。具体来说,我使用命令行工具安装了 Xcode 4.1,并确保更新了 openssl 和 readline。有人知道我还能尝试什么吗?

4

2 回答 2

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 (http://webchat.freenode.net/?channels=rvm) 中的 #rvm 停止,我 (Remear) 或 mpapis 可以进一步帮助您。

一些澄清信息:

最高约 4.1 的所有 Xcode 版本都附带标准的基于 GCC 的编译器。从 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 编译器的兼容性。

所以这里是你需要安装几乎所有红宝石的细分:

红宝石 1.8.x、红宝石 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)

于 2012-06-28T19:07:22.040 回答
1

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

rvm pkg install readline

其次是:

rvm install 1.9.3 -C "--with-readline-dir=$HOME/.rvm/usr"
于 2012-06-29T02:26:01.077 回答