私のプログラムには奇妙なメモリ関連のエラーがあります。Valgrind:実行可能なプログラムの共有ライブラリをロードできませんでした
これはintel mklを使用するため、いくつかのmkl固有の共有ライブラリに依存します。
私のプログラムを実行すると、ほとんどの作業が完了した後にセグメンテーションが行われます。 segfaultは、関数呼び出しfclose()でnullでないファイルポインタに発生します。
プログラムをgdbで実行すると、スタックトレースはあまり役に立ちません。
私はvalgrindを実行して、自分のコードで考えられるエラーを見つけたいと思っていました。
しかし、私はvalgrindから実行可能ファイルを実行できません。次のエラーメッセージが表示されます。
==52778== Memcheck, a memory error detector
==52778== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==52778== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==52778== Command: ./main.exe
==52778==
./main.exe: error while loading shared libraries: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory
同じディレクトリに存在しているlibmkl_intel_lp64.so共有ライブラリ(だけでなく、私の実行ファイルが依存する他のすべての共有ライブラリ)。
私のコードを評価するためにこの問題を解決するにはどうすればよいですか?
ありがとうございました。
編集:私も環境変数LD_LIBRARY_PATHを現在のディレクトリに設定しましたが、それは助けになりませんでした。
編集:、Linuxの64ビット上で実行している使用してインテル®コンパイラー2017
どのプラットフォームを実行していますか? '。/ main.exe'は、powershellの中からウィンドウを走っていることを示しています(Linux上の' gcc'コンパイル文字列に何らかの理由で '-o main.exe'を追加しない限り)。あなたが窓にいるなら、MinGW、MinGW-TDMを使っていますか? 'LD_LIBRARY_PATH'を設定したときに、ウィンドウやPOSIXパスの表記法を使用しましたか(例えば' c:/ path/to/your/lib')? –
Linuxで動作します。インテルコンパイラの使用。 –
これは役に立ちます - '.exe'は本当に私を守りません。 'libmkl_intel_lp64.so'を持つ' -Wl、-rpath =/path/to/dir'を追加して 'main.exe'を再コンパイルして、やり直してください。 –