2016-02-29 55 views
0

不知何故,我的CUDA二進制構建過程已被搞亂。所有.CU文件的編制完善,重視.o文件,但是當我嘗試鏈接,我得到:鏈接CUDA +普通C++代碼:未定義引用`__fatbinwrap_66_tmpxft_等

CMakeFiles/tester.dir/tester_intermediate_link.o: In function `__cudaRegisterLinkedBinary_66_tmpxft_00007a5f_00000000_16_cuda_device_runtime_compute_52_cpp1_ii_8b1a5d37': 
/tmp/tmpxft_00006b54_00000000-2_tester_intermediate_link.reg.c:7: undefined reference to `__fatbinwrap_66_tmpxft_00007a5f_00000000_16_cuda_device_runtime_compute_52_cpp1_ii_8b1a5d37' 

現在,我還沒有使用compute_52任何地方。我NVCC命令行是:

/usr/local/cuda/bin/nvcc -M -D__CUDACC__ /home/joeuser/src/my_project/src/kernel_specific/elementwise/Add.cu -o /home/joeuser/src/my_project/CMakeFiles/tester.dir/src/kernel_specific/elementwise/tester_generated_Add.cu.o.NVCC-depend -ccbin /usr/bin/gcc-4.9.3 -m64 --std c++11 -D__STRICT_ANSI__ -Xcompiler ,\"-Wall\",\"-g\",\"-g\",\"-O0\" -gencode arch=compute_35,code=compute_35 -g -G --generate-line-info -DNVCC -I/usr/local/cuda/include -I/opt/cub -I/usr/local/cuda/include 

和我的鏈接線:

/usr/bin/g++-4.9.3 -Wall -std=c++11 -g some.o files.o here.o blah.o blahblah.o bar.cu.o baz.cu.o -o bin/myapp -rdynamic -Wl,-Bstatic -lcudart_static -Wl,-Bdynamic -lpthread -lrt -ldl /usr/lib/libboost_system.so /usr/lib/libboost_program_options.so -Wl,-Bstatic -lcudart_static -Wl,-Bdynamic -lpthread -lrt -ldl /usr/local/cuda/extras/CUPTI/lib64/libcupti.so -lnvToolsExt -lOpenCL /usr/lib/libboost_system.so /usr/lib/libboost_program_options.so /usr/local/cuda/extras/CUPTI/lib64/libcupti.so -lnvToolsExt -lOpenCL -Wl,-rpath,/usr/lib:/usr/local/cuda/extras/CUPTI/lib64 

我會注意到我啓用了單獨的編譯,也似乎並沒有跳過我的中間環節階段。

這是怎麼發生的?

+2

我想你有單獨的編譯啓用的地方,並已跳過cuda設備運行時庫的設備鏈接階段。但是你沒有真正提供這個問題的一個嚴肅的例證,所以誰知道..... – talonmies

回答

1

嗯,我不知道爲什麼我看到缺少對Compute 5.2調用的引用,但將-lcudadevrt添加到鏈接命令的末尾會導致錯誤消失。

相關問題