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
4

5 回答 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我有很多分段错误。

于 2012-07-26T09:12:37.697 回答
18

我设法在 OSX 10.8.2 上毫无问题地进行了以下操作:

rvm install 1.8.7 --with-gcc=clang --without-tcl --without-tk
于 2012-12-09T17:09:28.543 回答
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
于 2012-12-03T04:17:59.140 回答
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

经过多次挠头后,我在 make 输出中注意到了这一行。

Use ActiveTcl libraries (if available).

原来我几年前安装了 ActiveTcl 8.4,但它从 /usr/include 获取 tk.h,它是 8.5 版。

我不知道如何安全地卸载 ActiveTcl 并且ActiveTcl 卸载说明不正确,但我确实安装了 ActiveTcl 8.5 并且解决了这个问题。 ActiveTcl在这里下载。

令人沮丧。无论如何,希望这对其他人有帮助。

于 2012-09-09T07:10:49.620 回答
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
于 2012-08-01T22:19:18.737 回答