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

3

我正在尝试在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文件中,但某种原因链接器没有找到它。 请问有人能告诉我我做错了什么吗?
谢谢!

binutilsobjdump能否处理这些目标文件,还是NVIDIA提供了一个? - Brian Cain
你尝试使用 g++ 进行最终链接了吗?理论上不应该有任何区别,但谁知道呢。 - tbalazs
是的,我已经尝试过了,但没有任何改变。无论如何还是谢谢。 - santisan
也许你有一个错放的#if或#ifdef导致main()未被编译? - harrism
1个回答

1
我建议最后使用g++而不是nvcc进行链接。如果你只有.o文件和库作为链接行的输入,我看不出使用nvcc的理由。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接