我正在尝试使用以下命令链接这些目标文件:
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函数错误的未定义引用。
如何正确链接?
答案 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