tags:

views:

55

answers:

3

My programming experience is about 1 year of C/C++ experience from high school, but I did my research and wrote a simple program with OpenCL a few months ago. I was able to compile and run this on an Apple computer relatively easily with g++ and the --framework option. Now I'm on my Ubuntu machine and I have no idea how to compile it. The correct drivers have been downloaded along with ATI's Stream SDK (I have an ATI Radeon HD5870). Any help would be appreciated!

A: 

Try

locate libOpenCL.so

If it is in one of the standard directories (most likely /usr/lib, or /usr/local/lib) you need to replace "--framework OpenCL" with "-lOpenCL". If g++ cannot find the lib you can tell g++ to look in a specific directory by adding "-L/path/to/library".

I wish I had my Linux to be more helpful... It is probably best if you redownload the ati-stream-sdk, after extracting it, open the Terminal and "cd /path/to/extracted/files"; in that directory execute make && sudo make install

  • make you probably know this from windows, this compiles, whatever needs to be compiled
  • && chains commands together, the following commands will only be executed if the first command succeeded
  • sudo make install this will put the files in the expected places (sudo executes a command with superuser priviledges, you will have to enter your password)

Hope that helps.

bjoernz
I've tried this, but then I get the error "fatal error: CL/opencl.h: No such file or directory" (one of the things that I #included in my program).
maybe you need to tell g++ about the location of the "CL/" directory (you do this with a "dash capital i"): g++ -L/path/to/library -I/path/to/CL main.cpp -lOpenCL
bjoernz
Now I'm getting: /usr/bin/ld: cannot find -lOpenCLcollect2: ld returned 1 exit status.Maybe I should be asking whether I am supposed to have moved around files from the SDK folder into different parts of my filesystem. I apologize, I am new to Linux (just recently trying to switch from Windows).
And she compiles and runs! Unfortunately, I wrote this when OpenCL was still in the beta...so apparently some code changes are needed. Thanks for the help!
Oh, and in case anyone is in a similar position, the final line to compile was: "g++ -lOpenCL -L/stream-sdk-2.2/lib/x86_64/ -I/stream-sdk-2.2/include/ [file_name].c"
A: 

You might be missing the dynamic libraries from the dynamic linker configuration.

Search for where the libraries are. Most likely /usr/lib, or /usr/local/lib.

Make sure the path location is also configured at one of these places:

  • LD_LIBRARY_PATH - you can set it in you environment shell, like .bashrc
  • /etc/ld.so.conf - you will need to call ldconfig to update the cache and it requires root access to change the file.
Paulo Pinto
A: 

Try installing the deb package of the SDK here:

http://forums.amd.com/forum/messageview.cfm?catid=390&threadid=125792

It automatically sets up the little things you need to do.

mchaten