问题标签 [mkmf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
773 浏览

c - mkmf 在编译 C 扩展时忽略子文件夹中的文件

我想像这样组织 C 源代码:

我无法让此设置与mkmf. native_extension/lib中包含的文件native_extension.c将被完全忽略。

当我构建扩展时,只native_extension.{h,c}编译,我得到一个不完整native_extension.{so,dll}的,当我尝试运行它时给我符号查找错误。

有什么办法可以使这项工作?

0 投票
1 回答
882 浏览

ruby - 如何使用 ruby​​ 的 mkmf 链接到外部 c 库?

我在这个目录中有以下文件:

我试图让我的 ruby​​gem 通过在 irb 中执行以下操作来确定上述库是否存在:

有人可以解释为什么这不起作用吗?

0 投票
1 回答
218 浏览

ruby - 使用 mkmf.rb 时在 Linux 上构建源代码 Ruby 1.9.2 的问题

我使用 vanilla ./configure 命令在 Fedora 16 上构建了 Ruby 1.9.2-p320,安装在 /usr/local

包含文件在 /usr/local/include/ruby-1.9.1

这个程序说“不”:

我认为这是因为构建 conftest.c 以查看是否存在 rb_thread_blocking_region 的命令行不包含 /usr/local/include/ruby-1.9.1 下各个目录的 -I 路径,因此构建失败。不过我不确定,因为 mkmf 使用自定义记录器,并且每当我尝试将 $stderr.puts 语句添加到某些方法时,我要么看不到输出,要么收到错误消息告诉我我需要安装开发工具。我在 linux 上使用了很多开发工具以及 Ruby 源代码,但是如果有人能告诉我如何在 try_func 方法中转储 headers 变量,那可能会有所帮助。

奇怪的是,到目前为止,我在构建其他二进制 gem 时没有遇到任何问题,包括 RMagick,但我被困在 mysql2 上,因为它认为 rb_thread_blocking_region 不存在,所以它会生成不正确的代码。

再深入一点,我可以使用适当的 -I 选项编译这个程序,所以 rb_thread_blocking_region 肯定存在。

啊,这是来自 mkmf.log 的问题:

我应该想到这一点——crypt 和 openssl 库在 Fedora 上一直很麻烦。

0 投票
1 回答
875 浏览

ruby - 在 gem 安装 id3lib-ruby 期间缺少 libstdc++

我正在尝试安装 id3lib-ruby,但出现此错误:

我已经安装了各种 libstdc++:

这是 mkmf.log:

关于我做错了什么或如何解决它的任何想法?

0 投票
1 回答
61 浏览

ruby - 无法构建 gem 原生扩展 (em-irc)

尝试安装 em-irc,得到:

0 投票
5 回答
6415 浏览

ruby-on-rails - 安装 gem 时出错,无法构建 gem 原生扩展 -- 无法加载此类文件 -- mkmf

RoR 很好,但有时让我想把头撞到墙上(无论如何这可能是我的错)。我只是试图安装Thinweb-client gem,当我运行时sudo gem install thin,我收到以下错误(它需要先安装 eventmachine gem):

我搜索了“无法加载此类文件--mkmf”错误,但大多数问题似乎都围绕着这样一个事实,即它在 1.8-dev 但不是 1.8 中可用,但当我运行 1.9.3 时,我想我有 mkmf - 我验证过locate mkmf

mkmf 所在的目录显然不在 /usr/lib/ruby/... 目录下 - 我不确定这是否是我的问题,但它可能足以让你们中的一位专家快速启动发生了什么以及解决方案可能是什么。

另外,我使用 RVM 来安装 ruby​​ 1.9.3 而不仅仅是gem install...

提前致谢!

0 投票
2 回答
335 浏览

c - 当测试函数需要参数时,have_func 的正确用法是什么?

我有extconf.rb以下几行:

所以,cblas_dgemm肯定是在cblas.h。当我查看mkmf.log时,我发现这个检查实际上是在寻找两件事:

  1. 某处的_cblas_dgemm符号(?)
  2. 一个可调用cblas_dgemmcblas.h.

两个测试都失败了。我认为前者失败了,因为我需要一条dir_config线cblas,也许还有一条线have_library('cblas')

但我不知道如何使后一个测试通过(参见要点的第 24 行)。是否可以将一个块传递给它,have_func以便它实际上用合理的参数调用它?还是有其他方法可以运行此测试?还是我必须dir_config正确设置这些东西?

顺便说一下,这是第 24 行:

是的,当然,cblas_dgemm需要很多参数——其中一些是矩阵。

mkmf令人沮丧的是,关于这些功能的文档很少。

0 投票
1 回答
1013 浏览

c - 简单的 Ruby C 扩展找不到 ruby​​.h

我为 Ruby 编写了一个非常简单的 C 扩展。不幸的是,它找不到ruby.h.

这是extconf.rb

这是唯一的源文件:

当我尝试编译它时,我收到以下错误:

完整的要点。请注意,行号已关闭,因为我主要注释掉了代码而不是删除它。

有趣的是,如果我尝试在不清理的情况下再次编译,我会得到一个不同的错误:

(完整的输出再次包含在上面的要点中。)

也许这是一个线索?

为什么找不到ruby.h?当我编译NMatrixSciRuby rb-gsl fork时,它们都可以正常工作并且定位没有问题ruby.h。(为了记录,我写了 NMatrix、C 扩展和所有的——我把这个特定的扩展基于那个extconf.rb。)

0 投票
1 回答
327 浏览

c++ - extconf.rb:如何根据头文件更改生成 makefile 目标?

在我的extconf.rb,我有

这些中的每一个都依赖于多个头文件。如果 Itouch foo.cpptouch bar.cpp, 然后 do rake compile,它将重新编译相应的目标文件。

但是触摸.h文件显然不会产生相同的效果。我不记得这是我使用extconf.rbC/C++ 编码的症状还是只是一个事实。

有什么方法可以指导我extconf.rb编写一个知道这些头文件的makefile吗?

0 投票
1 回答
314 浏览

ruby - 使用 MKMF 创建 makefile

如何使用 MKMF 创建复杂的 Makefile?我需要指定目标,包括其他 makefile,指定宏等等。那可能吗?我对 MKMF 很陌生,我只在网上找到了如何使用 MKMF 的非常基本的示例。

例如,我的 Makefile 开头需要以下行: