在makefile错误中编译cuda文件
Posted
技术标签:
【中文标题】在makefile错误中编译cuda文件【英文标题】:compiling cuda file in makefile error 【发布时间】:2011-11-02 13:13:00 【问题描述】:我制作了一个 makefile 来编译我的文件:
CFLAGS = -O3 -Wall -I /usr/local/cuda/include/
NVCCFLAGS = -O3 -arch sm_20
LDFLAGS = -O3 -L/usr/local/cuda/lib64 -lcudart
EXE = runAPP
app.o:app.cu
$(NVCC) $(NVCCFLAGS) -c $< -o $(CPPFLAGS) $(LIB_PATH) $(LDFLAGS) $@
$(EXE): app.o
$(NVCC) $(NVCCFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(CPPFLAGS) $(LIB_PATH) app.o \
-lANN_char -lz
cp $@ ../bin
但我遇到了这个问题:
app.cpp:26:26: 错误: cuda_runtime.h: 没有这样的文件或目录 app.cpp:27:18:错误:cuda.h:没有这样的文件或目录
这就是我将它们包含在 app.cpp 中的方式:
#include <cuda.h>
#include <cuda_runtime.h>
为什么会出现这个问题?
我在google上搜索,他们说app.cpp必须总是app.cu,是真的吗?
提前致谢。
【问题讨论】:
您没有显示app.o
的编译规则。它是如何编译成对象的?
您展示的makefile仅描述了如何通过链接app.o
和一些库来构建runApp
。但是您还没有显示app.o
的构建规则。我要你给我看。
app.o: app.cu $(NVCC) -c %
我刚刚添加了,但我得到了:缺少分隔符
请编辑问题以显示实际的 makefile 和实际错误......
【参考方案1】:
如果你的makefile,你有:
CFLAGS = -O3 -Wall -I /usr/local/cuda/include/
NVCCFLAGS = -O3 -arch sm_20
LDFLAGS = -O3 -L/usr/local/cuda/lib64 -lcudart
EXE = runAPP
app.o:app.cu $(NVCC) $(NVCCFLAGS) -c $$(CPPFLAGS) $(LIB_PATH) $(LDFLAGS) $@
CPPFLAGS 应该扩展为空;尝试将其更改为 CFLAGS,或将 CFLAGS 更改为 CPPFLAGS。
【讨论】:
没问题。我自己也分享了那些时刻。 :)以上是关于在makefile错误中编译cuda文件的主要内容,如果未能解决你的问题,请参考以下文章