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


10

現在、このウェブサイトから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

これで、この Webサイトの指示に従ってインストールしました。しかし、私はまだ上記のエラーが発生します。

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

回答:


14

リンカーがOpenCLライブラリを見つけられません。

リンカーがOpenCLライブラリーを見つけるのを助ける必要があります。

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

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

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

1
これは私のために働いた!最初の答え。ありがとうございました!
Sharan Duggirala

3

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を使用している場合は、コンパイラ/リンカーコマンドを次のように変更するだけです。それ以外の場合は、ビルドシステムにどのように含めるかを検討する必要があります。


または試すLDFLAGS例えばmake 'LDFLAGS=-L/usr/lib/x86_64-linux-gnu'
steeldriver

あなたが純粋に一時的な解決策を探しているなら、これはまたトリックをします。ただしLDFLAGS=$LDFLAGS:/usr/lib/x86_64-linux-gnu/、以前の設定を保持するために作成することをお勧めします
mbeyss '19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.