我正在尝试链接到 NVCC 生成的目标文件。这里有一个非常简单的“库”:
//foo.cu:
void foo() {
}
以及使用“库”的文件:
//main.cu:
extern void foo();
int main(){
foo();
}
请注意,我通过直接在文件中声明函数来规避在这个简单设置中对包含文件的需求。这是我尝试构建的命令:
nvcc -c foo.cu -arch=sm_20
nvcc main.cu foo.o -arch=sm_20
为什么这不适用于 NVCC?第二个命令产生大量:
warning: null character(s) ignored
error: unrecognized token
我在不同的机器上尝试了不同的 CUDA 安装(4.0)。同样奇怪的编译器/链接器输出。
我还尝试使用extern "C"
而不是 C++ 名称修饰。相同的行为。此外,C 名称修饰在实际应用中不是一个选项。