链接到使用 cuda nvcc 创建的目标文件时出现问题

发布于 2025-01-02 14:57:14 字数 601 浏览 2 评论 0原文

我正在尝试链接到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愚人国度 2025-01-09 14:57:14

令人难以置信的是,颠倒第二次调用中的参数顺序可以解决这个问题。

nvcc foo.o main.cu -arch=sm_20

(叹)

Unbelievable, reversing the order of arguments in the second call fixes this.

nvcc foo.o main.cu -arch=sm_20

(Sigh)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文