首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ruby的mkmf链接到外部c库?

如何用ruby的mkmf链接到外部c库?
EN

Stack Overflow用户
提问于 2011-11-16 00:20:01
回答 1查看 874关注 0票数 3

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

代码语言:javascript
复制
~/test/lib/liblost.dylib
~/test/include/lost.h

我正在尝试让我的rubygem通过在irb中执行以下操作来确定上面的库是否存在:

代码语言:javascript
复制
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 

有没有人能解释一下为什么这个不起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-19 01:13:39

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

修复方法是避免在目录路径中使用~字符,或者确保在调用编译器之前将其展开。

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

代码语言:javascript
复制
dir_config('', File.expand_path('~/test'))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8139541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档