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

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

我想安装厨师使用gem安装厨师。 这是失败的:

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环境variables设置为gcc完全没有。

Cross从StackOverflow发布

如果你的CSWruby包是最新的(看起来是因为二进制文件是ruby18),你可以使用替代机制来切换到rbconfig.rb,它被设置为使用/ opt / csw / gcc4 / bin / gcc而不是太阳编译器。 如果它不是最新的,那么有一个实用工具包含了一段时间,叫做cswrbconfig,允许在编译器之间切换。 我忘记了我也添加了哪个版本的包,但是如果内存服务的话,这个function已经可以使用一年多了。

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

(我是OpenCSWruby维护者。)

在定义之后你是否输出了CC?

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

然后运行你的mkmf的东西。

编辑 – 哈西 – 创build一个链接

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

注意我现在还在gcc居住在/ usr / sfw中,“固定”了CC =上面的path。

编辑Makefile并修改CCvariables到你的gcc二进制文件,然后再试一次。

是否有./configure步骤? 如果是这样,你可以尝试在运行之前设置CC envvariables。