在 Solaris 10 上为 yajl 在 ruby​​ mkmf 中使用 gcc 代替 SUNWspro cc

在 Solaris 10 上为 yajl 在 ruby​​ mkmf 中使用 gcc 代替 SUNWspro cc

如何让 mkmf 在 Solaris 10 上使用 gcc 而不是 /opt/SUNWspro/bin/cc?

我正在尝试使用 gem install chef 安装 chef。但失败了,原因如下:

Building native extensions.  This could take a while...
ERROR:  Error installing chef:
    ERROR: Failed to build gem native extension.

    /opt/csw/bin/ruby18 extconf.rb
creating Makefile

make
/opt/SUNWspro/bin/cc -I. -I/opt/csw/lib/ruby/1.8/i386-solaris2.9 -I/opt/csw/lib/ruby/1.8 /i386-solaris2.9 -I. -I/opt/csw/include -D_FILE_OFFSET_BITS=64  -KPIC -xO3 -m32 -xarch=386  -KPIC  -Wall -funroll-loops  -c yajl.c
make: /opt/SUNWspro/bin/cc: Command not found
make: *** [yajl.o] Error 127


Gem files will remain installed in /opt/csw/lib/ruby/gems/1.8/gems/yajl-ruby-0.8.2 for inspection.
Results logged to /opt/csw/lib/ruby/gems/1.8/gems/yajl-ruby-0.8.2/ext/yajl/gem_make.out

检查 /opt/csw/lib/ruby/gems/1.8/gems/yajl-ruby-0.8.2/ext/yajl/Makefile 得出:

CC = /opt/SUNWspro/bin/cc

至关重要的是,将 CC 环境变量设置为 gcc 根本没有任何作用。

交叉发布自堆栈溢出

答案1

如果您的 CSWruby 软件包是最新的(由于二进制文件是 ruby​​18,所以看起来是最新的),您可以使用替代机制切换到设置为使用 /opt/csw/gcc4/bin/gcc 而不是 sun 编译器的 rbconfig.rb。如果它不是最新的,有一段时间包含一个名为 cswrbconfig 的实用程序,允许在编译器之间切换。我忘了我在哪个版本的软件包中添加了它,但如果我没记错的话,该功能已经推出一年多了。

如果您对 CSWruby(或其他 OpenCSW 包)有更多疑问,请在 freenode irc 上的 #opencsw 中寻找维护人员。

(我是 OpenCSW ruby​​ 维护者。)

答案2

定义 CC 后您是否将其导出?

CC=/usr/sfw/bin/gcc
export CC

然后运行你的 mkmf 文件。

编辑-hacky-创建链接

mkdir -p /opt/SUNWspro/bin/
ln -s /usr/sfw/bin/gcc /opt/SUNWspro/bin/cc

请注意,我还“修复”了上面 CC= 中的路径,因为 gcc 现在位于 /usr/sfw 中。

答案3

编辑 Makefile 并将 CC 变量修改为您的 gcc 二进制文件,然后重试。

是否有 ./configure 步骤?如果有,您可以尝试在运行之前设置 CC 环境变量。

相关内容