5

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

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

/media/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 函数错误的未定义引用。

我怎样才能正确链接这个?

4

2 回答 2

7

您需要添加编译器开关:

-L/usr/local/cuda/lib64

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

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

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

而不是您拥有的现有语句。(更改includelib64或可能lib

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

于 2013-05-13T22:54:30.907 回答
2

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

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

完整的链接线:

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
于 2013-05-13T22:59:03.153 回答