簡體   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