【问题标题】:Ruby 1.9.3 installation not working due to clang由于铿锵声,Ruby 1.9.3 安装无法正常工作
【发布时间】:2012-06-28 17:15:14
【问题描述】:

我正在尝试使用 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)

我的 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

这是我的 GCC:

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。有人知道我可以尝试什么吗?

【问题讨论】:

  • Installing Ruby 1.9.3 Troubles with Clang 的可能重复项 - Ruby Clang 支持有限,应避免使用!
  • 好的,我可以使用 gcc 4.2 吗?我相信这就是我以前使用的并且效果很好。我正在尝试使用 Xcode 4.3 CL 附带的 gcc 来安装 Ruby,但在 rvm 安装过程中无法找到/设置它。

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


【解决方案1】:

您的“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 编译器的兼容性。

以下是安装几乎所有 ruby​​ 所需的详细信息:

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)

【讨论】:

  • 您好,感谢您的回复。我想采用第三种方法(现在都安装了 Xcode 4.3.3 和 CL 工具),但在运行普通的旧 rvm install 1.9.3 时仍然会出错。我是 IRC 的 andrewjl88,之前 ping 过你,欢迎随时回复。再次感谢。
  • 对不起,我想你了。我在夜间 MST 期间更多,但尝试让至少一台机器打开消息。当你再次出现时给我发短信,并保持联系,直到我们联系上。
  • 不用担心,实际上我自己修复了所有问题。原来命令行语法发生了变化,这就是让我绊倒的原因。为我服务而不是 RTFM :)
【解决方案2】:

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

rvm pkg install readline

接着是:

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

【讨论】:

  • 我咨询了 RVM 的当前维护者 mpapis,他说不需要 -C。如果确实如此,那就是一个错误。如果您在没有 -C 的情况下无法使其工作,请在 github.com/wayneeseguin/rvm/issues 提交问题,以便他进行调查。
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多