2011-02-17 14 views
0

G ++リンカとCUDAオブジェクトファイル、および私のCUDA .cuファイルを持つオブジェクトを作成しますここに私の通常のC++ファイルCUDA:私はので、私はからCUDAのものを呼び出すことができ、これらをリンクさせたい</p> <p>を.COするために、私はの.oために私の通常のcppファイルをコンパイル

が起動していることを確認する私のリンカコマンドです:

g++ -I ../readers/ -I../writers -I../common/ -I /home/dcole/software/xerces-c-3.1.1/src -I /home/dcole/NVIDIA_GPU_Computing_SDK/C/common/inc/ -I /usr/local/cuda/include -O3 -fPIC -fopenmp -DFIX_PAULI -DFIX_YAMA -DUSING_CUDA -o YamaguchiGPU YamaguchiMain.o YamaguchiDecomp.o cuYamaguchi.co -L/usr/lib64/ ../../lib/IDT.a ../../lib/Linux/libxerces-c.a ../../lib/Linux/libfftw3f.a -lcurl -lidn -ldl -lssl -lm -lpthread -lcuda -L/usr/local/cuda/lib64/libcudart.so 

だから私は間違いなくCUDAを結ぶ、とcudart、まだ私はこれを取得しています:

cuYamaguchi.co: In function `__sti____cudaRegisterAll_46_tmpxft_00003190_00000000_4_cuYamaguchi_cpp1_ii_init_gpu()': 
tmpxft_00003190_00000000-1_cuYamaguchi.cudafe1.cpp:(.text+0x1b4): undefined reference to `__cudaRegisterFatBinary' 
tmpxft_00003190_00000000-1_cuYamaguchi.cudafe1.cpp:(.text+0x20f): undefined reference to `__cudaRegisterFunction' 

答えて

0

私はリンカーの絶対検索パスを_libcudart.so_に使っていました。私は-Lを単にフォルダを指すように変更し、次に-libcudartを追加して、そのlibのフォルダを検索します。

1

Cudaファイルは問題なくリンクされていますが、必要な機能(cudaRegisterFatBinaryなど)を定義するのを忘れているようです。

+0

これらは、cuda APIの一部である関数です。私のソース.cuファイルにはcuda.hとcuda_runtime.hが含まれています – Derek

1

gcc 4.7.0以降にアップグレードすると、この恐ろしいリンカの問題が修正されるはずです。

関連する問題

 関連する問題