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 ファイルにありますが、何らかの理由でリンカがそれを認識していません。誰が私が間違っているのか教えてください。

ありがとう!

4

1 に答える 1

1

nvcc ではなく g++ で最終的なリンクを行うことをお勧めします。リンク行への入力として .o ファイルとライブラリしかない場合は、nvcc を使用する理由がわかりません。

于 2012-02-27T03:44:30.680 に答える