我对命令行编译比较陌生(我通常使用Xcode)并且无法让CUDA nvcc编译器使用现有的C代码。
我的main.cu文件包含
#include "eval.h"
#include "runge-kutta.h"
#include "plot.h"
我使用以下构建命令:
nvcc -o cudaMain \"$file\" -Xlinker -framework,OpenGL,-framework,GLUT && ./cudaMain
其中$ file是文件位置。
我在构建时遇到以下错误:
Undefined symbols for architecture x86_64:
runge_kutta(diffeq_soln*, void (*)(float, float*, float*, unsigned long, void**), float*, float (*)(float, float*), unsigned long, void**)
它还列出了eval.h中定义的其他函数。当我使用Xcode编译时,我的代码运行正常,并且在包含的头文件中定义了runge_kutta(以及所有其他引用的函数)。理想情况下,我希望将我的代码编译为普通的C项目,除了包含设备代码的单个CUDA .cu文件。我该怎么做呢? Nvcc似乎没有编译我的主文件,除非它有.cu扩展名。
由于
答案 0 :(得分:1)
您需要编译和链接其他源文件。类似的东西:
nvcc -o cudaMain \"$file\" eval.cpp runge-kutta.cpp plot.cpp \
-Xlinker -framework,OpenGL,-framework,GLUT