CUDA链接器错误:未定义对main的引用

时间:2011-12-15 02:44:55

标签: linux cuda linker-errors nvcc

我正在尝试在Linux中编译CUDA程序,我收到以下链接器错误:

/usr/lib/gcc/x86_64-redhat-linux/4.4.4/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

这是我的Makefile:

mtrand.o : mtrand/mtrand.cpp
    nvcc -I"./mtrand" -O2 -c mtrand/mtrand.cpp

CUDAMCMLrng.o : CUDAMCMLrng.cu
    nvcc --use_fast_math -O2 -c CUDAMCMLrng.cu

kernel.o : CUDAMCMLrng.o kernel.cu
    nvcc --use_fast_math -O2 -c kernel.cu

main.o : mtrand.o CUDAMCMLrng.o kernel.o main.cu
    nvcc --use_fast_math -O2 -Xcompiler "-fopenmp -Wall" -c main.cu

lab : main.o mtrand.o CUDAMCMLrng.o kernel.o
    nvcc -lgomp -o lab main.o mtrand.o CUDAMCMLrng.o kernel.o

main函数位于main.cu文件中,但由于某种原因,链接器没有看到它。 谁能告诉我我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议使用g ++而不是nvcc进行最终链接。如果您只有.o文件和库作为链接行的输入,我认为没有理由使用nvcc。