• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OpenSSLの共有ライブラリ(libcrypto.so)動的リンクにつきまして)

OpenSSLの共有ライブラリ(libcrypto.so)の動的リンクについて

このQ&Aのポイント
  • OpenSSLの共有ライブラリ(libcrypto.so)をロードするプログラムのNULL返却について
  • 指定したパスに存在する共有ライブラリが見つからないエラーの解決方法
  • 共有ライブラリのパスの指定方法について

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

DLL_OPENってdlopenだよね。 libcrypto.soが参照している別のsoファイルが見つからないとか。 やってみたいこと: 1. RTLD_NOWをRTLD_LAZYにしてみる。これでエラーにならないなら別ファイルが問題だね。 2. LD_LIBRARY_PATHに/usr/local/ssl/libを追加して、パスを/usr/local/ssl/lib/libcrypto.soでなくてlibcrypto.soで呼んでみる。これで通るようだと絶対パス指定に問題があるか。

darkness22
質問者

補足

> パスを/usr/local/ssl/lib/libcrypto.soでなくて > libcrypto.soで呼んでみる。 で、Openすることが出来ました! 絶対パス指定に問題...。ということは、プログラム "/usr/local/ssl/lib/libcrypto.so" の指定方法が、 何かしらまずいのか...。もしかして、 /usr/local/ssl/lib/usr/local/ssl/lib/libcrypto.so を見に行っているとか?(それはないですかね^^;) 何でだろう...。 でも、libcrypto.soをOpenすることが出来ました^^ ありがとうございました^^

その他の回答 (3)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.4

ANo.3です。ファイル名指定で上手くいったということだとパス指定に対応していない可能性もありますね。 DLL_OPENの仕様を確認してみると良いかもしれません。名前もdlopenと違うので仕様が違うのかもしれません。

darkness22
質問者

お礼

------- void *dlopen(const char *filename, int flag); filename がスラッシュ ("/") を含む場合、(相対か絶対かの)パス名として解釈される。 それ以外の場合、動的リンカは以下の手順(LD_LIBRARY_PATHなど~以下略) ------- 関数仕様を見てみましたが、 「filename がスラッシュ ("/") を含む場合、(相対か絶対かの)パス名として解釈される」 と書いてあるので、絶対パスでいけそうなもんですが、何かが駄目なんでしょうね^^; 今、ファイル名だけ書いているので、LD_LIBRARY_PATHを見に行ってくれているのですね。 このたび、ありがとうございました。 Openできたので、次は中身の関数を使えるかを試して見ます。

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

# No such file or directory パーミッション以前に物が存在しないように思いますね。 以下のようなパスになっているとか・・・ /usr/local/lib/libcrypto.so

darkness22
質問者

補足

hSO = DLL_OPEN("/usr/local/ssl/lib/libcrypto.so", RTLD_NOW); と、コールしてるのですが、 違うパスのファイルを読み込みに行く事があるのでしょうか? (知識薄くて申し訳ないです^^;)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

アクセス権はどうなってますか?r-xr-x-r-xですか? 念のためにLD_LIBRARY_PATHに/usr/local/ssl/libを追加してみては。

darkness22
質問者

補足

アクセス権は問題ないようです。 -rw-r--r-- 1 root 3141092 libcrypto.a lrwxrwxrwx 1 root 18 libcrypto.so -> libcrypto.so.0.9.8* -r-xr-xr-x 1 root 1756663 libcrypto.so.0.9.8* LD_LIBRARY_PATHに/usr/local/ssl/lib は、通してるのですが、駄目みたいです^^;

関連するQ&A