making shared object file

Hello,

I am trying to make a .so file with the nvcc compiler. I basically took a code that was previously written for a linear CPU and re-wrote it for a GPU.

The compiler options I used to make this file with gcc were

[codebox]

gcc -fPIC -c filename.c -std=c99

gcc -shared -o filename.so filename.o

[/codebox]

Now I am trying to do the same thing but with the new code for the gpu. I see that nvcc has a -shared option and I have tried many combinations of commands.

if my file is filename.cu what should I type in the command line to compile and link it to make filename.so ???

nvcc -o mygpulib.so -shared mykernel.cu

If you are on a 64-bit Linux distribution, you need to run instead:

nvcc -o mygpulib.so --compiler-options ‘-fPIC’ -shared mykernel.cu

Ok thanks, doing what you posted for the 64 bit linux system successfully creates a shared object file, but when I run my script that uses this file I get an error loading the file. To try and see if it was the compiler options that were wrong, I took the non-cuda version of my file that successfully works with my program when compiled with the gcc options above and I compiled it with nvcc with the options you provided. I get a successful compile, but when I run my script that uses the shared object file I get a bus error? can anyone explain this to me?