在与g ++链接时找不到-lcuda

时间:2013-05-13 22:44:19

标签: c gcc cuda linker g++

我正在尝试使用以下命令链接这些目标文件:

g++ NT_FFT_Decomp.o T_FFT_Decomp.o SNT_FFT_Comp.o ST_FFT_Comp.o VNT_FFT_Comp.o VT_FFT_Comp.o CUDA_FFT_Comp.o Globals.o main.o \
-L/media/wiso/Programs/Setups/CUDA/include -lcuda -lcudart -lpthread -o DevicesTest
  

/媒体/ WISO /程序/设置/ CUDA

是我的cuda安装目录。 我的LD_LIBRARY_PATH是这样的:

Irrelevant:/media/wiso/Programs/Setups/CUDA/lib64:/media/wiso/Programs/Setups/CUDA/lib:Irrelevant

该命令提供此错误消息:

/usr/bin/ld: cannot find -lcuda
/usr/bin/ld: cannot find -lcudart

删除-lcuda和-lcudart会生成对cuda函数错误的未定义引用。

如何正确链接?

2 个答案:

答案 0 :(得分:6)

您需要添加编译器开关:

-L/usr/local/cuda/lib64

或类似的东西,告诉g ++在哪里找到-lcuda-lcudart库。

在您的情况下,该行可能是:

-L/media/wiso/Programs/Setups/CUDA/lib64

而不是您拥有的现有声明。 (将include更改为lib64或可能lib

同样,LD_LIBRARY_PATH与编译和链接无关。

答案 1 :(得分:2)

-L/media/wiso/Programs/Setups/CUDA/include // WRONG:“ - L”适用于库...但“/ include”通常用于标题

建议更改:-L/media/wiso/Programs/Setups/CUDA/lib64

COMPLETE LINK LINE:

g++ NT_FFT_Decomp.o \
  T_FFT_Decomp.o  \
  SNT_FFT_Comp.o  \
  ST_FFT_Comp.o  \
  VNT_FFT_Comp.o  \
  VT_FFT_Comp.o \
  CUDA_FFT_Comp.o \ 
  Globals.o main.o \
  -L/media/wiso/Programs/Setups/CUDA/lib64 -lcuda -lcudart -lpthread \
  -o DevicesTest