cudaカーネルを含む1つの.cuファイルと、カーネルを呼び出すラッパー関数があります。.cファイルもたくさんあります。そのうちの1つにmain関数が含まれています。これらの.cファイルの1つは、.cuからラッパー関数を呼び出してカーネルを呼び出します。
これらのファイルを次のようにコンパイルします。
LIBS=-lcuda -lcudart
LIBDIR=-L/usr/local/cuda/lib64
CFLAGS = -g -c -Wall -Iinclude -Ioflib
NVCCFLAGS =-g -c -Iinclude -Ioflib
CFLAGSEXE =-g -O2 -Wall -Iinclude -Ioflib
CC=gcc
NVCC=nvcc
objects := $(patsubst oflib/%.c,oflib/%.o,$(wildcard oflib/*.c))
table-hash-gpu.o: table-hash.cu table-hash.h
$(NVCC) $(NVCCFLAGS) table-hash.cu -o table-hash-gpu.o
main: main.c $(objects) table-hash-gpu.o
$(CC) $(CFLAGSEXE) $(objects) table-hash-gpu.o -o udatapath udatapath.c $(LIBS) $(LIBDIR)
これまでのところ、すべてが順調です。table-hash-gpu.cuは、.cファイルの1つから関数を呼び出します。mainにリンクすると、関数が存在しないというエラーが表示されます。誰かが何が起こっているのか教えてもらえますか?