Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何让ruby mkmf识别修补过的函数?_C_Ruby_Gem - Fatal编程技术网

C 如何让ruby mkmf识别修补过的函数?

C 如何让ruby mkmf识别修补过的函数?,c,ruby,gem,C,Ruby,Gem,我对使用它感兴趣,特别是对它的内存分析方面感兴趣。我正试图将它专门用于ruby 1.9.3-p484。我知道它需要一个补丁,并且基本上已经应用了p484,尽管修改了 Ruby编译/构建得很好,我的Ruby环境irb具有GC上定义的那些函数 irb(main):001:0> GC.malloc_allocations => 56769 irb(main):002:0> GC.malloc_allocated_size => 11939060 然后我尝试gem安装ruby

我对使用它感兴趣,特别是对它的内存分析方面感兴趣。我正试图将它专门用于ruby 1.9.3-p484。我知道它需要一个补丁,并且基本上已经应用了p484,尽管修改了

Ruby编译/构建得很好,我的Ruby环境irb具有GC上定义的那些函数

irb(main):001:0> GC.malloc_allocations
=> 56769
irb(main):002:0> GC.malloc_allocated_size
=> 11939060
然后我尝试gem安装ruby prof(使用自定义ruby中的gem二进制文件),它安装得很好。但是,它运行的mkmf extconf拒绝识别修补的函数。Irb证实了这一点

irb(main):004:0> have_func("rb_gc_malloc_allocations")
checking for rb_gc_malloc_allocations()... no
=> false
irb(main):005:0> have_func("rb_gc_malloc_allocated_size")
checking for rb_gc_malloc_allocated_size()... no
=> false
我知道它说它首先检查“公共”(不确定这意味着什么)头文件,或者您告诉它检查的任何其他头文件。默认情况下,ruby prof只检查公共头(在extconf.rb中)


不幸的是,我对C不太感兴趣。我是不是缺少了一些补丁?我是否也需要在ruby标题中添加一些内容?我需要将一些标志传递给gem install命令,以便ruby prof的extconf.rb找到正确的函数?有什么建议吗?

所以,我终于找到了答案(当然是在同事的帮助下)。事实证明,该函数确实需要在ruby头中公开为可用。我在问题中发布的补丁需要稍作调整,以符合ruby prof的预期(并在标题中公开函数)

我把它放在这里是希望它能帮助一些未来的求知者