linux - CUDA 链接器错误 : undefined reference to main

标签 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

这是我的生成文件:

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 文件中,但由于某种原因链接器看不到它。 谁能告诉我我做错了什么?

谢谢!

最佳答案

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

关于linux - CUDA 链接器错误 : undefined reference to main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514485/

相关文章:

arrays - bash 脚本使用变量获取第 7 个参数

c++ - 使用自定义内核或 CUBLAS 对 vector 张量积进行 CUDA 优化

c++ - cuda统一内存泄漏

c++ - 链接器错误:未定义对 Class::enum 的引用

ios - 链接器命令失败,退出代码为 1(使用 -v 查看调用)iOS 错误

c - 如何调试 printf 等标准 C 库函数?

linux - 在 Tegra TK1 上使用 malloc() 与 cudaHostAlloc() 分配的数据的 CPU 内存访问延迟

c - 在 C 中找出 Linux 和 FreeBSD 上的 MAC 地址

cuda - nvcc:找不到命令

objective-c - 惠普错误 - "_OBJC_CLASS_$_TFHpple"