このチュートリアルに従って、私のコンピュータにfglrxドライバをインストールしました。http://wiki.cchtml.com/index.php/Fedora_18_Installation_Guide、opencl-headersパッケージをインストールして実行したときに、最後にamd app sdkをインストールしました。
gcc -lOpenCL someprogram.c
エラーが発生しました。
/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
fglrxinfoから次の情報を取得します。
display: :0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6310 Graphics
OpenGL version string: 4.2.12422 Compatibility Profile Context 13.152
そして/usr/lib64/にはlibopencl.soはありません。
私はそれを実行して接続する方法を見つけました。
gcc -I/opt/AMDAPP/include -L/opt/AMDAPP/lib/x86_64 -lOpenCL hellocl.c -o hello
答え1
ld
リンクする実際のライブラリが必要です。ヘッダーはリンクではなくコンパイルにのみ必要です。libOpenCL.so
ライブラリパスで呼び出されたファイルを見つけます。ld
マンページから:
-l namespec
--library=namespec
Add the archive or object file specified by namespec to the list of
files to link. This option may be used any number of times. If
namespec is of the form :filename, ld will search the library path
for a file called filename, otherwise it will search the library path
for a file called libnamespec.a.
On systems which support shared libraries, ld may also search for
files other than libnamespec.a. Specifically, on ELF and SunOS
systems, ld will search a directory for a library called
libnamespec.so before searching for one called libnamespec.a.
(By convention, a ".so" extension indicates a shared library.)
Note that this behavior does not apply to :filename, which always
specifies a file called
filename.
ビルドシステムが探している名前にライブラリをシンボリックリンクしてみてください。
ln -s /usr/lib64/libopencl.so /usr/lib64/libOpenCL.so