Ошибка компоновщика CUDA: неопределенная ссылка на главную - PullRequest
2 голосов
/ 15 декабря 2011

Я пытаюсь скомпилировать программу CUDA в Linux и получаю следующую ошибку компоновщика:

/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 Ответ

1 голос
/ 27 февраля 2012

Я рекомендую сделать окончательное связывание с g ++, а не с nvcc.Если у вас есть только файлы и библиотеки .o в качестве входных данных для строки ссылки, я не вижу причин использовать nvcc.

...