使用其他C文件编译CUDA

时间:2014-03-17 19:13:47

标签: c cuda compilation

我对命令行编译比较陌生(我通常使用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扩展名。

由于

1 个答案:

答案 0 :(得分:1)

您需要编译和链接其他源文件。类似的东西:

nvcc -o cudaMain \"$file\" eval.cpp runge-kutta.cpp plot.cpp \
  -Xlinker -framework,OpenGL,-framework,GLUT