/usr/bin/ld: -lOpenCL が見つかりません

/usr/bin/ld: -lOpenCL が見つかりません

現在、OpenCLで与えられた簡単なプログラムをコンパイルしようとしていますこれウェブサイト。必要なものが提供されますDeviceInfo。 を呼び出すだけでmake、以下のエラーが発生します。

sharan@sharan-X550CC:~/opencl-ex/Ex1$ make 
g++ DeviceInfo.cpp -I ../../Cpp_common  -lOpenCL -o DeviceInfo
/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
Makefile:23: recipe for target 'DeviceInfo' failed
make: *** [DeviceInfo] Error 1

今私は以下の指示に従ってインストールしましたこれウェブサイト。しかし、それでも上記のエラーが発生します。

このエラーを解決するにはどうすればよいですか?

答え1

リンカーがOpenCLライブラリを見つけることができません。

リンカーがOpenCLライブラリを見つけられるように支援する必要があります。

同様の問題が提起されたここ

解決策は、ライブラリを既知のライブラリの場所にリンクすることです。

sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so

別のオプション:

OpenCLライブラリが次の場所にあると仮定すると、/usr/lib/x86_64-linux-gnu/ライブラリ パスにライブラリ フォルダーを追加することもできます。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/"

「ダイナミック リンカー」を更新する必要があるかもしれません:

sudo ldconfig

答え2

Yaron がすでに述べたように、リンカーは OpenCL ライブラリがどこにあるか知りません。つまり、探している場所にはどこにも存在しません。

それをそれらの場所(例えば )のいずれかに移動するのではなく、/usr/libフラグを介してリンカーにそれを探す場所を通知することをお勧めします-L。コマンドは次のように読みます( に注意してください-L/usr/lib/x86_64-linux-gnu)。

g++ DeviceInfo.cpp -I ../../Cpp_common -L/usr/lib/x86_64-linux-gnu -lOpenCL -o DeviceInfo

手書きを使用している場合は、Makefile次のようにコンパイラ/リンカー コマンドを変更するだけです。それ以外の場合は、ビルド システムを変更して、それを組み込む方法を変更する必要があります。

関連情報