1

私は(ubuntuの下で)iccでcppコードをコンパイルしています:

icc -I/usr/share/R/include -I/~/Desktop/work/p1/geqw4/vi3/out/sp/ccode/eigen -fpic -O2 -pipe -c -DEIGEN_NO_DEBUG aha.cpp -o aha.o

icc -shared -o aha.so aha.o -L/usr/local/lib/R/site -Wl,-rpath,/usr/local/lib/R/site -L/usr/lib64/R/lib -lR

コンパイルされますが、実行可能ファイルを実行すると、次のようになります。

unable to load shared object '~/Desktop/work/p1/geqw4/vi3/out/sp/ccode/simcode/mine2/aha.so':
  libimf.so: cannot open shared object file: No such file or directory

libimf.soは/opt/ intel / lib/intel64にあります。前回iccを使用したとき(1年前)に同じ問題が発生したことを覚えていますが、解決策が何であったか思い出せません。

4

4 に答える 4

4

リンカが/opt/ intel / binを検索するように、ライブラリパスを更新する必要があります。(libではなくbinであることを確認しますか?)システム全体にしたい場合は、LD_LIBRARY_PATH環境変数に追加するか、/ etc/ld.so.confに追加できます。

于 2012-07-09T10:54:00.043 に答える
3

解決しました。

将来の記録のために(私は年に一度iccを使用します):

行う

gedit ~/.bashrc

それから

LD_LIBRARY_PATH=/opt/intel/lib/intel64
export LD_LIBRARY_PATH

次に、〜/ディレクトリから次のようにします。

source .bashrc
于 2012-07-09T11:09:13.250 に答える
1

インテル®コンパイラーには、環境をセットアップするさまざまなシェルスクリプトが付属しています。通常、あなたがしなければならないのは、1つのスクリプトをソースすることだけです。

 source ${INTEL_COMPILER_DIR}/bin/compilervers.csh

また、他の製品(MKL、TBBなど)にも設定する必要があります。

于 2015-01-08T16:44:02.677 に答える
1

icpcまたはiccがリンクする共有ライブラリの多くは実際には必要ありません。ビルド後ldd -u -r、最終ビルドファイル(実行可能または共有ライブラリ)で実行して、未使用のライブラリの依存関係をすべて表示する必要があります。libimfが使用されていないことがわかった場合は、次のオプションを使用して実行可能ファイルまたは共有ライブラリをコンパイルできます。

-Wl,--as-needed

次に、再実行ldd -u -rして、依存関係がなくなるかどうかを確認します。

于 2017-07-21T19:01:40.660 に答える