1

Makefile で次のように一緒にコンパイルする必要があるいくつかのファイルがあります (名前は現在ダミーです)。

compile:
        g++ prog1.cpp func1.cpp func2.cpp func3.cpp -L/usr/lib/ -lmkl_lapack64 -lmkl 
        -lguide -lpthread -o output_ready.out

コンパイルを行うと、次のエラーが発生します。

/usr/bin/ld: cannot find -lmkl_lapack64                                                                                                                                                
/usr/bin/ld: cannot find -lmkl                                                                                                                                                         
/usr/bin/ld: cannot find -lguide                                                                                                                                                       
collect2: ld returned 1 exit status                                                                                                                                                    
make: *** [compile] Error 1 

このプログラムは、以前に別のマシンで正しくコンパイルされました。

Q: lapack lib のパスが正しいかどうかを確認するにはどうすればよいですか? どうすれば修正できますか? ライブラリがインストールされます (正しいパスかどうかはわかりません)。

有益なコメントは大歓迎です。R

4

4 に答える 4

1

まず第一に、自分で計画したように、ライブラリが正しいディレクトリにインストールされているかどうかを確認することをお勧めします。これを行う明白な方法は、単に cd を実行し/usr/libて、lapack ライブラリがあるかどうかを確認することです (すぐに気付くでしょう)。

すべてが本来あるべき場所にインストールされている場合は、コンパイルすることをお勧めします

-I /usr/local/include/lapackpp/ 

ヘッダー用、および

-L /usr/local/lib -llapackpp 

ライブラリの場合、すべての lapack ライブラリにアクセスする必要があるためです。

/usr/libまた、ではなく でライブラリを探します/usr/local/libか? ただし、これはOS /設定固有のものだと思います。

最後に、しばらく前に、あなたが抱えている問題と同様の問題があり、このWebサイトで適切で明確な説明を見つけました. :-)

于 2013-03-06T15:49:07.570 に答える
1

彼が lapack ライブラリを探す唯一のパスは/usr/lib- それがリンカに指定した唯一のディレクトリだからです。ライブラリが別の場所にインストールされている場合は、それを見つけて見つける必要があります。

  • -L別のパラメーターを介してリンカーにその場所を提供し、
  • またはライブラリを移動します/usr/lib

リンカーがライブラリを見つけることができるようにします。

于 2013-03-05T15:42:52.273 に答える
1

-L/usr/libコンパイラはすでにライブラリを探すことを知っていると思うので、必要ないと思います。-L<path to where lapack libraries are>とはいえ、標準の場所にインストールされていない場合は必要です。

于 2013-03-05T15:45:51.250 に答える