山狮系统 rvm 安装 1.8.7 x11 错误

60
在更新到Mountain Lion之后,我尝试安装1.8.7版本,但出现错误。提示找不到X11文件,我已经安装了Xquarkz,但是没有改变。有什么问题吗?
Fail to find [tclConfig.sh, tkConfig.sh]
Use MacOS X Frameworks.

Find Tcl/Tk libraries. Make tcltklib.so which is required by Ruby/Tk.
clang -I. -I../.. -I../../. -I../.././ext/tk -DHAVE_RB_SAFE_LEVEL -DHAVE_RB_HASH_LOOKUP -DHAVE_RB_PROC_NEW -DHAVE_RB_OBJ_TAINT -DHAVE_ST_PTR -DHAVE_ST_LEN -DRUBY_VERSION=\"1.8.7\" -DRUBY_RELEASE_DATE=\"2012-06-29\"  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -DWITH_TCL_ENABLE_THREAD=0 -fno-common -g -O2  -fno-common -pipe -fno-common   -c stubs.c
In file included from stubs.c:10:
/usr/include/tk.h:78:11: fatal error: 'X11/Xlib.h' file not found
#       include <X11/Xlib.h>
                ^
1 error generated.
make[1]: *** [stubs.o] Error 1
make: *** [all] Error 1

可能是在Mountain Lion上使用RVM安装ree-1.8.7的重复问题。 - JJJ
如果您不需要tcltk,并且不想像@MatteoAlessani建议的那样安装X11,请参见下面@mat的评论。 - Jared Beck
5个回答

142

尝试通过http://xquartz.macosforge.org/landing/安装X11,并使用以下命令为编译器设置正确的X11库路径:

export CPPFLAGS=-I/opt/X11/include

尝试重新安装Ruby,并将编译器指定为gcc-4.2:

CC=/usr/local/bin/gcc-4.2 rvm reinstall 1.8.7

如果没有使用CC,我会经常遇到分段错误。


1
你尝试过使用brew安装gcc吗?命令是brew install apple-gcc42 - Matteo Alessani
1
我遇到了这个问题:"错误:apple-gcc42没有可用的配方"。我找到了一些资料,说我应该先使用"brew tap homebrew/dupes"。之后,这个解决方案似乎起作用了!谢谢! - Chris Butler
20
另外,嗯,因为我永远不需要tcl或tk:rvm reinstall 1.8.7 --without-tcl --without-tk - mat
1
@ZainZafar -I代表包含,它将以下包含目录添加到编译器。 - Matteo Alessani
Tom,那个rvm reinstall命令返回/usr/include/tk.h:78:11: fatal error: 'X11/Xlib.h' file not found - Someone Somewhere
显示剩余3条评论

18

我在OSX 10.8.2上成功地完成了以下操作,没有遇到任何问题:

rvm install 1.8.7 --with-gcc=clang --without-tcl --without-tk

我是一个Rails开发者,那我需要tk和tcl吗?难道它们不是GUI库吗? :) 感谢这个提示 - 它起作用了! - Alex Kovshovik
注意,Ruby 1.8.7与Clang不完全兼容。当我尝试使用bundler和rails时,在OSX 10.8.4上使用此方法会导致大量分段错误,直到我回去首先安装GCC 4.2,然后重新安装1.8.7。这种方法对我最有效,类似于@matteo-allesani的答案。 - jzn
感谢您!在OSX 10.9上安装Ruby 1.8.7,使用以下命令即可成功! - Someone Somewhere

5
如果您不需要tcl或tk,并且使用rbenv,那么以下方法应该可行:
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

CC=/usr/local/bin/gcc-4.2 CONFIGURE_OPTS="--without-tcl --without-tk" rbenv install 1.8.7-p358

3
即使进行了X11修复,我仍然遇到了这个编译错误。
compiling stubs.c
In file included from stubs.c:16:
/usr/include/tk.h:23:3: error: #error Tk 8.5 must be compiled with tcl.h from Tcl 8.5
make[2]: *** [stubs.o] Error 1
make[1]: *** [ext/tk/all] Error 2
make: *** [build-ext] Error 2

在长时间的思考后,我注意到了编译输出中的这一行。
Use ActiveTcl libraries (if available).

原来我已经安装了ActiveTcl 8.4,但它从版本为8.5的/usr/include中获取了tk.h文件。我无法弄清楚如何安全地卸载ActiveTcl,ActiveTcl卸载说明不正确,但我安装了ActiveTcl 8.5,这解决了问题。可以在此处下载ActiveTcl。希望这能帮助其他人。

0
这是我的.rvmrc引导文件,希望能对你有所帮助:
if (uname -a | grep '12.0.0 Darwin' >/dev/null); then
    CC=/usr/local/bin/gcc-4.2 CPPFLAGS=-I/opt/X11/include rvm --install --create --disable-tcl --disable-tk use ree@gemset_name
else
    rvm --install --create --disable-tcl --disable-tk use ree@gemset_name
fi

if ! which bundle >/dev/null; then
    gem install bundler --pre --no-ri --no-rdoc && bundle install
fi


if ! bundle check >/dev/null; then
    bundle install
fi

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