[環境]
Linux version 2.6.9-67.EL
gcc version 3.4.6 (Red Hat 3.4.6-8))
以下のように、OpenSSLの共有ライブラリlibcrypto.soをロードする
プログラムを書いているのですが、
------
#include <stdio.h>
#include <dlfcn.h>
#include <errno.h>
void main(void)
{
void* hSO;
hSO = DLL_OPEN("/usr/local/ssl/lib/libcrypto.so", RTLD_NOW);
if( hSO == NULL )
{
printf("%s\n", dlerror());
}
else
{
// 処理
}
}
------
hSO = DLL_OPEN("/usr/local/ssl/lib/libcrypto.so", RTLD_NOW);
で、NULLが返って来てしまいます。
[dlerror内容]
/usr/local/ssl/lib/libcrypto.so: cannot open shared object file: No such file or directory
しかし、このパスには、シンボリックリンクされたlibcrypto.soファイルが存在します。
試しに、同ディレクトリにあるlibcrypto.so.0.9.8mも試しましたが、同じエラーが出力されました。
パスの指定方法に、何か行う必要があるのでしょうか。
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で呼んでみる。これで通るようだと絶対パス指定に問題があるか。
この回答への補足
> パスを/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することが出来ました^^
ありがとうございました^^
No.4
- 回答日時:
ANo.3です。
ファイル名指定で上手くいったということだとパス指定に対応していない可能性もありますね。DLL_OPENの仕様を確認してみると良いかもしれません。名前もdlopenと違うので仕様が違うのかもしれません。
-------
void *dlopen(const char *filename, int flag);
filename がスラッシュ ("/") を含む場合、(相対か絶対かの)パス名として解釈される。
それ以外の場合、動的リンカは以下の手順(LD_LIBRARY_PATHなど~以下略)
-------
関数仕様を見てみましたが、
「filename がスラッシュ ("/") を含む場合、(相対か絶対かの)パス名として解釈される」
と書いてあるので、絶対パスでいけそうなもんですが、何かが駄目なんでしょうね^^;
今、ファイル名だけ書いているので、LD_LIBRARY_PATHを見に行ってくれているのですね。
このたび、ありがとうございました。
Openできたので、次は中身の関数を使えるかを試して見ます。
No.1
- 回答日時:
アクセス権はどうなってますか?r-xr-x-r-xですか?
念のためにLD_LIBRARY_PATHに/usr/local/ssl/libを追加してみては。
この回答への補足
アクセス権は問題ないようです。
-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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- Ruby 教えてください 2 2023/01/04 17:50
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
音楽再生についてのVC++のプロ...
-
VC++でビルド時の、リンク警告 ...
-
【VS2008 C++】2つのプロジェ...
-
zlib.libとlibpng.libについて
-
VC++6.0からVC++.NET2005へ移植
-
スタティックライブラリの使い方
-
C++によるPostgreSQLの接続
-
#pragma commentの相対パス指定
-
静的/動的リンクライブラリにつ...
-
ShellExecute関数について(初...
-
'stdafx.h'のエラーに関して
-
eclipse+MinGWの環境で外部ライ...
-
lvwReport/エラー/プロジェクト...
-
OpenSSLの共有ライブラリ(libcr...
-
#include <winreg.h>をインクル...
-
error LNK2019: 未解決の外部シ...
-
openCVプログラムをvisualstudi...
-
C言語 コンパイルできない "vi...
-
fatal error LNK1104: ファイル...
-
C/C++の.libについて教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタティックライブラリ関係の...
-
DirextXエラー:ファイル'dxerr9...
-
fatal error LNK1104: ファイル...
-
【VS2008 C++】2つのプロジェ...
-
visual studio community2017 O...
-
静的/動的リンクライブラリにつ...
-
C言語のPathFileExistsについて
-
VS2010にて、依存関係とビルド順
-
C++Builder リンカエラーとは?
-
exeファイルはどのdllを参照す...
-
C++によるPostgreSQLの接続
-
VC++でビルド時の、リンク警告 ...
-
'stdafx.h'のエラーに関して
-
C/C++の.libについて教えてくだ...
-
#pragma commentの相対パス指定
-
#include <winreg.h>をインクル...
-
タイプライブラリのレジストリ...
-
'd3dx9.lib' が開けません。
-
「MFCを使用しない」から「MFC...
-
error LNK2001: 外部シンボル "...
おすすめ情報