繁体   English   中英

UUDntu 12.04中的CUDA链接错误

[英]CUDA linking error in Ubuntu 12.04

我一直在寻找解决我的问题的方法:我不能使用CUDA运行.cpp文件。 我认为这是一个模块错误,因为我收到以下错误:

g++ -L/usr/local/cuda/lib64 -L~/NVIDIA_GPU_Computing_SDK/shared/lib/linux -L~/NVIDIA_GPU_Computing_SDK/C/common/lib/linux -L~/NVIDIA_GPU_Computing_SDK/C/lib -lcutil -lcudpp -lcuda -lcudart -lcurand -o my_file my_file.o
/usr/bin/ld: cannot find -lcutil
/usr/bin/ld: cannot find -lcudpp

我的makefile看起来像这样:

EXECUTABLE := my_file
SDKPATH := ~/NVIDIA_GPU_Computing_SDK
CUDAPATH := /usr/local/cuda

LDFLAGS := -L$(CUDAPATH)/lib64 -L$(SDKPATH)/shared/lib/linux -L$(SDKPATH)/C/common/lib/linux -L$(SDKPATH)/C/lib -lcutil -lcudpp -lcuda -lcudart -lcurand
CXFLAGS := -I$(CUDAPATH)/include -I$(SDKPATH)/shared/inc -I$(SDKPATH)/C/common/inc

CXX := g++
NVCC := $(CUDAPATH)/bin/nvcc

$(EXECUTABLE): my_file.o
    $(CXX) $(LDFLAGS) -o $(EXECUTABLE) my_file.o

my_file.o: my_file.cu
    $(NVCC) $(CXFLAGS) -c my_file.cu

当我,而不是尝试手动运行该文件时,我得到以下输出:

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
my_file.o: In function `__cudaUnregisterBinaryUtil()':
tmpxft_00000e8f_00000000-1_my_file.cudafe1.cpp:(.text+0xf): undefined reference to `__cudaUnregisterFatBinary'
my_file.o: In function `__sti____cudaRegisterAll_59_tmpxft_00000e8f_00000000_4_my_file_cpp1_ii_71dc03a4()':
tmpxft_00000e8f_00000000-1_my_file.cudafe1.cpp:(.text+0x1f): undefined reference to `__cudaRegisterFatBinary'
collect2: ld returned 1 exit status

对于linux来说,我是一个完全的菜鸟。 任何人都可以对这种情况有所了解。

问候

您在构建的链接阶段有订购问题。 因为您指定的库是需要它们的文件之前提供的,所以它们会被丢弃。 如果您将makefile更改为:

LDFLAGS := -L$(CUDAPATH)/lib64 -L$(SDKPATH)/shared/lib/linux -L$(SDKPATH)/C/common/lib/linux
LIBS := -lcutil -lcudpp -lcuda -lcudart -lcurand

....

$(EXECUTABLE): my_file.o
    $(CXX) $(LDFLAGS) -o $(EXECUTABLE) my_file.o $(LIBS)

你会发现问题消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM