我正在尝试链接到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名称修改不是实际应用程序中的一个选项。
答案 0 :(得分:2)
令人难以置信的是,在第二次调用中颠倒参数的顺序可以解决这个问题。
nvcc foo.o main.cu -arch=sm_20
(叹气)