3

このディレクトリには次のファイルがあります。

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

irbで次のようにして、上記のライブラリが存在するかどうかをrubygemに判断させようとしています。

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 

誰かがこれが機能しない理由を説明できますか?

4

1 に答える 1

2

これは~、ホームディレクトリの指定に使用しているためと思われます。シェル~は、単語の最初の文字である場合にのみ、ホームディレクトリのパスに展開されます。mkmfライブラリの存在を確認するためにコンパイラを呼び出すコマンドラインを作成するとき、-Lオプションを使用して呼び出すディレクトリを指定します-L~/test/lib。これは、のようになり、展開されません。mkmf.logこれはファイルで確認できるはずです。

~修正は、ディレクトリパス内の文字を回避するか、コンパイラの呼び出しで使用される前に文字が展開されるようにすることです。

これを行うには、次のように変更dir_config('','~/test')します。

dir_config('', File.expand_path('~/test'))
于 2011-11-18T17:13:39.157 に答える