gpt4 book ai didi

c++ - 我将如何指示 extconf.rb 使用额外的 g++ 优化标志,哪些是可取的?

转载 作者:数据小太阳 更新时间:2023-10-29 08:55:18 26 4
gpt4 key购买 nike

我正在使用 Rice为 Ruby gem 编写 C++ 扩展。扩展名采用共享对象 (.so) 文件的形式。

这需要“mkmf-rice”而不是“mkmf”,但两者 (AFAIK) 非常相似。

默认情况下,编译器使用标志 -g -O2。就个人而言,我觉得这种做法很愚蠢,因为启用任何优化都很难进行调试。我已经求助于编辑 Makefile 以删除我不喜欢的标志(例如,当我需要使用 main() 进行调试时删除 -fPIC -shared Ruby 的钩子(Hook))。

但我认为一定有更好的方法。我知道我可以做到

$CPPFLAGS += " -DRICE"

添加额外的标志。但是,如何在不直接编辑 Makefile 的情况下删除内容?

第二个问题:对于 Ruby 加载的共享对象,哪些优化是安全的?我可以做 -funroll-loops 之类的事情吗?大家有什么推荐的?

这是一个科学计算项目,所以越快越好。内存不是什么大问题。

最佳答案

定义你使用

-D name=definition

就像您在示例中所做的那样:

$CPPFLAGS += " -DRICE"

-U name
Cancel any previous definition of name, either built in or provided with a -D option.

$CPPFLAGS += " -URICE"

虽然我不确定它是否会像您想要的那样帮助取消定义 -O2。

关于c++ - 我将如何指示 extconf.rb 使用额外的 g++ 优化标志,哪些是可取的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com