gpt4 book ai didi

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

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

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

~/test/lib/liblost.dylib
~/test/include/lost.h

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

ruby-1.9.2-p290 :008 > dir_config('','~/test')
=> ["~/test/include", "~/test/lib"]
ruby-1.9.2-p290 :009 > have_library('lost')
checking for main() in -llost... no
=> false

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

最佳答案

这看起来是因为使用~ 指定了主目录。如果 ~ 是单词的第一个字符,shell 只会将其扩展为您的主目录的路径。当 mkmf 构造命令行调用编译器检查库是否存在时,它使用 -L 选项指定要调用的目录,最终看起来像-L~/test/lib,所以没有展开。您应该能够在 mkmf.log 文件中看到它。

解决方法是避免在目录路径中使用 ~ 字符,或者确保它在调用编译器之前得到扩展。

您可以通过将 dir_config('','~/test') 更改为:

dir_config('', File.expand_path('~/test'))

关于ruby - 如何使用 ruby​​ 的 mkmf 链接到外部 c 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139541/

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