链接到使用 cuda nvcc 创建的目标文件时出现问题
我正在尝试链接到 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
Why is this not work with NVCC?第二个命令产生大量:
warning: null character(s) ignored
error: unrecognized token
我尝试在不同的机器上安装不同的 CUDA (4.0)。同样奇怪的编译器/链接器输出。
我还尝试使用 extern "C"
而不是 C++ 名称修饰。同样的行为。此外,C 名称修改在实际应用中不是一个选项。
I am trying to link to an object file generated by NVCC. Here a very simple "library":
//foo.cu:
void foo() {
}
And the file that uses the "library":
//main.cu:
extern void foo();
int main(){
foo();
}
Note, I circumvent the need for a include file in this simple setup by declaring the function directly in the file. Here the command I tried to build this:
nvcc -c foo.cu -arch=sm_20
nvcc main.cu foo.o -arch=sm_20
Why is this not working with NVCC? The second command produces tons of:
warning: null character(s) ignored
error: unrecognized token
I tried on a different machine with a different CUDA installation (4.0). Same strange compiler/linker output.
I also tried using extern "C"
instead of the C++ name mangling. Same behavior. Besides, C name mangling is not an option in the real application.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
令人难以置信的是,颠倒第二次调用中的参数顺序可以解决这个问题。
(叹)
Unbelievable, reversing the order of arguments in the second call fixes this.
(Sigh)