繁体   English   中英

修改CUDA和cpp Makefile

[英]Modifying CUDA and cpp Makefile

我试图修改我的makefile以支持.cpp和.cu,但是,我不断收到如下错误:

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o(.text+0x20): error: undefined reference to 'main'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'camera'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'camera'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'camera'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'camera'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'sphereCount'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'sphereCount'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'sphereCount'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'spheres'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'spheres'
hostCode.o:displayfunc.cpp:function readScene(char*): error: undefined reference to 'sphereCount'
hostCode.o:displayfunc.cpp:function idleFunc(): error: undefined reference to 'updateRendering()'
hostCode.o:displayfunc.cpp:function reshapeFunc(int, int): error: undefined reference to 'reInitCamera(bool)'
hostCode.o:displayfunc.cpp:function keyFunc(unsigned char, int, int): error: undefined reference to 'reInitCamera(bool)'

Makefile文件

CXX = g++
NVCC = nvcc -ccbin $(CXX)


INCLUDES := -I/home/cuda_app/inc/

LDFLAGS = -lGL -lGLU -lglut -lpthread


ALL:= test

test:    hostCode.o deviceCode.o

        $(NVCC) $(INCLUDES) -o $@ $< $(LDFLAGS)

deviceCode.o: SmallPtCUDA.cu

        $(NVCC) $(INCLUDES) -o $@ -c $< $(LDFLAGS)


hostCode.o: displayfunc.cpp

        $(CXX) $(INCLUDES) -o $@ -c $< $(LDFLAGS)

clean:

        rm -rf  *.o  $(ALL)

如何同时编译.cpp.cu

有人可以帮忙吗? 谢谢

当询问有关构建错误的问题时,最好不仅包括错误,而且还包括调用编译器或链接器的命令。 出现这样的错误,问题就在那里; 查看错误消息是有帮助的,但不是确定的。

在您的情况下,问题是您的makefile中的链接命令不正确:

test:    hostCode.o deviceCode.o
        $(NVCC) $(INCLUDES) -o $@ $< $(LDFLAGS)

您在这里使用$< ,它会扩展为第一个前提条件。 如果您包括了链接行并进行了检查,则会发现deviceCode.o文件不在链接行中。 您希望您的链接命令看起来像这样:

test:    hostCode.o deviceCode.o
        $(NVCC) $(INCLUDES) -o $@ $^ $(LDFLAGS)

使用$^扩展到所有先决条件。

另外,请注意,按照惯例, LDFLAGS包含链接器选项(例如-L ,而LDLIBS用于链接器选项(例如-l 但是,您的设置将起作用(这不是常规的设置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM