有没有办法改变宝石的gcc编译选项?

时间:2011-07-20 12:11:41

标签: ruby-on-rails gcc gem

我正在努力安装RedCloth gem。当我输入

gem install RedCloth

我明白了:

[…]
ragel/redcloth_attributes.c.rl: In function ‘redcloth_attribute_parser’:
ragel/redcloth_attributes.c.rl:26:11: error: variable ‘act’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors

make: *** [redcloth_attributes.o] Error 1 
[…]

原因是在RedCloth gem的extconf.rb中传递给gcc的-Werror编译选项:

require 'mkmf'
CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
$CFLAGS << ' -O0 -Wall -Werror' if CONFIG['CC'] =~ /gcc/
[…]

问题是当我从文件中删除-Werror选项时,下次启动“gem install”命令时它会自动重新出现。

如何永久取消设置-Werror选项?


另一个选择是降级到gcc 4.5.2,但它不在我的Fedora 15的存储库中。

我宁愿避免从源代码编译它......

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:21)

有同样的问题,这是解决方案:

$ sudo gem install RedCloth -- --with-cflags=\"-O2 -pipe -march=native -Wno-unused-but-set-variable\"

如果您有多个参数,则必须转义引号。

答案 1 :(得分:9)

如果您使用的是bundler,则可以使用以下方法:

bundle config build.RedCloth --with-cflags=\"-O2 -pipe -march=native -Wno-unused-but-set-variable\"