我正在使用Rice为 Ruby gem 编写 C++ 扩展。扩展名采用共享对象 (.so) 文件的形式。
这需要'mkmf-rice'而不是'mkmf',但两者(AFAIK)非常相似。
默认情况下,编译器使用标志-g -O2
。就个人而言,我觉得这种做法很愚蠢,因为启用任何优化都很难进行调试。我求助于编辑 Makefile 来删除我不喜欢的标志(例如,-fPIC -shared
当我需要使用main()
而不是 Ruby 的钩子进行调试时删除)。
但我认为必须有更好的方法。我知道我能做到
$CPPFLAGS += " -DRICE"
添加其他标志。但是如何在不直接编辑 Makefile 的情况下删除东西呢?
第二个问题:对于 Ruby 加载的共享对象,哪些优化是安全的?我可以做类似的事情-funroll-loops
吗?大家有什么推荐的?
这是一个科学计算项目,所以越快越好。内存不是什么大问题。