私は/ usr/local/libにいくつかのネイティブライブラリをインストールしました。Rubyにネイティブライブラリを見つける方法を教えてください。
を正しくビルドするためにこれらを必要とする宝石をインストールしようとしていますが、 ライブラリが見つからないため、宝石ビルドに失敗します。
gemのextconf.rbファイルは、 have_library()
でライブラリを見つけることを試みますが、これは何らかの理由で失敗します。
私は、環境変数の束を設定しようとしたが、何も動いていないようにみえ:
irb(main):003:0> require 'mkmf'
=> true
irb(main):004:0> have_library('gecodesearch')
checking for main() in -lgecodesearch... no
=> false
irb(main):005:0> ENV['LD_LIBRARY_PATH']='/usr/local/lib'
=> "/usr/local/lib"
irb(main):006:0> have_library('gecodesearch')
checking for main() in -lgecodesearch... no
=> false
irb(main):007:0> ENV['DYLD_LIBRARY_PATH']='/usr/local/lib'
=> "/usr/local/lib"
irb(main):008:0> have_library('gecodesearch')
checking for main() in -lgecodesearch... no
=> false
irb(main):009:0> have_library('libgecodesearch')
checking for main() in -llibgecodesearch... no
=> false
irb(main):010:0> ENV['C_INCLUDE_PATH']='/usr/local/lib'
=> "/usr/local/lib"
irb(main):011:0> have_library('gecodesearch')
checking for main() in -lgecodesearch... no
=> false
irb(main):012:0> ENV['PATH']='/usr/local/lib'
=> "/usr/local/lib"
irb(main):013:0> have_library('gecodesearch')
checking for main() in -lgecodesearch... no
=> false
この問題を解決する最良の方法は何ですか?
私が直接このような状況に遭遇したことがありませんが、私はあなたが '$ LOAD_PATH'(へのパスを追加した場合と仮定しています'$:' "/ usr/local/lib/mylib" 'あるいは、Rubyインタプリタを1つ以上の[' -I'](http:// www .zenspider.com/Languages/Ruby/QuickRef.html#コマンドラインオプション)オプション: 'ruby -I/usr/local/lib/mylib foo。rb' – Phrogz
残念ながら、それはそうではありません。 'irb(main):001:0> 'mkmf''を必要とします。 ' => true' 'irb(main):002:0> $:<< "/ usr/local/lib" ' ' => ["/usr/pkg/lib/ruby/site_ruby/1.9"、 "/usr/pkg/lib/ruby/site_ruby/1.9/i386-netbsdelf"、 "/" usr/pkg/lib/ruby/site_ruby "、" /usr/pkg/lib/ruby/vendor_ruby/1.9 "、" /usr/pkg/lib/ruby/vendor_ruby/1.9/i386-netbsdelf "、"/usr/pkg /usr/pkg/lib/ruby/1.9/ "/ usr/local/lib"、 "/ lib/ruby/vendor_ruby"、 "/usr/pkg/lib/ruby/1.9"、 "/usr/pkg/lib/ruby/1.9/i386-netbsdelf"" main()で-lgecodesearchをチェックしています...いいえ => false" –
ルートを追加しないでください'/ usr/local/lib'をロードパスに追加するには、ライブラリアンの実際のディレクトリ/ディレクトリあなたは必要です。 Rubyは、ロードパス内のディレクトリの下にあるすべてのディレクトリを階層的に検索しません。 – Phrogz