2011-07-14 18 views
2

私はいくつかのコードをコンパイルしようとしています。C++:奇妙な共有ライブラリエラー - eclipse

error while loading shared libraries: libcudart.so.4: cannot open shared object file

は、今私は/usr/local/cuda/includeを含めて/usr/local/cuda/libにリンクされ、コンパイルプロンプト上-lcudart旗を渡されました:ここで私が得ているエラーです。

まだこのランタイムエラーが発生します。

私はEclipseを使い始めました。これはです。本当にです。

洞察力が大変高く評価されています。事前に

おかげで、

答えて

4

これは、通常、古いコードがフォルダ構造を変更するときに発生します。古いコードでファイルがどこにあるかを探し、それが実際にどこにあるかへのシンボリックリンクを作ります。

また、rootとしてeclipseを起動してみてください。または実行中:

ldconfig /usr/local/cuda/lib 
+2

'sudo ldconfig/usr/local/cuda/lib'が動作しました! – Eamorr

0

は、右のディレクトリに予想される名前で、ファイルが存在していますか?シンボリックリンク(バージョン管理された.soを指しているものと仮定します)と、有効な共有オブジェクトを指していますか?そのファイルに対する読み取りアクセス権を持っていますか?

コードをコンパイルしようとしているときに、ランタイムエラーと表示されます。コンパイルできることを意味しますか?エラーが発生すると、コンパイラを実行しようとするとエラーが発生します(リンカエラー)。

+0

こんにちは、返信ありがとうございます。はい、ファイルが存在します(シンボリックリンクです)。私はそれが正しいディレクトリ(/ usr/local/cuda/lib)だと確信しています。私はファイルに対する読取り許可を持っています。はい、リンカのエラーです... – Eamorr

3

デフォルトでは、実行時リンカーは/ usr/local/cuda/libには表示されません。あなたは明示的にそれを見て指示する必要があります。 /usr/local/cuda/libを含むようにLD_LIBRARY_PATH環境変数を設定し

  1. :いくつかの方法があります。
  2. ​​をrootとして実行します。
  3. リンカーの引数に-rpath=/usr/local/cuda/libを追加してください(g++とリンクしている場合は-Wl,-rpath=/usr/local/cuda/lib)。
2

私は全く同じエラーがありました。私はUbuntu 10.04の下でCudaとeclipse Junoを使用しています。問題は、すでに/usr/local/cuda/lib64~/.bashrcなど)を指すようにリンカーパスを設定していたのに対し、Eclipseはまだそれを見つけることができなかったということでした。私はコンパイルされた(Eclipse経由で)プロジェクトをターミナルから実行することができましたが、Runを試した後、Eclipseのターミナルでリンクできませんでした。

私のソリューションは、より恒久的な解決策があるかどうかはわからないFile->Properties->Run/Debug Settings->Edit (Selected project)->Environment Tab

に値/usr/local/cuda/lib64で変数LD_LIBRARY_PATHを追加することでしたが、それは私のために働きました。 同じ理由でプロジェクトをビルドできなかったため、ビルド環境(プロパティウィンドウのC/C++ Build->Environment)にいくつか余分な変数が既に追加されていたことにも言及してください。

奇妙なことは、最初は問題なく動くことができ、私が日食を再開すると、私は何も変えずにこのエラーが現れたということです。