如何让 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 软件包是最新的(由于二进制文件是 ruby18,所以看起来是最新的),您可以使用替代机制切换到设置为使用 /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 环境变量。