我在这个目录中有以下文件:
~/test/lib/liblost.dylib
~/test/include/lost.h我正在尝试让我的rubygem通过在irb中执行以下操作来确定上面的库是否存在:
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 有没有人能解释一下为什么这个不起作用?
发布于 2011-11-19 01:13:39
这看起来是由于使用~指定主目录造成的。如果~是单词的第一个字符,那么外壳程序只会将它扩展到主目录的路径。当mkmf构造命令行来调用编译器以检查库是否存在时,它使用-L选项指定要调用的目录,最后看起来像-L~/test/lib,因此没有展开。您应该能够在mkmf.log文件中看到这一点。
修复方法是避免在目录路径中使用~字符,或者确保在调用编译器之前将其展开。
您可以通过将dir_config('','~/test')更改为:
dir_config('', File.expand_path('~/test'))https://stackoverflow.com/questions/8139541
复制相似问题