【问题标题】:Problems linking to an object file created with cuda nvcc链接到使用 cuda nvcc 创建的目标文件的问题
【发布时间】:2012-02-04 13:30:41
【问题描述】:

我正在尝试链接到由 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 名称重整在实际应用中不是一个选项。

【问题讨论】:

  • 为什么要同时使用目标文件和源文件调用 nvcc?那种保证奇怪,不是吗?

标签: linker cuda nvcc


【解决方案1】:

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

nvcc foo.o main.cu -arch=sm_20

(叹气)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2016-06-24
    • 2014-07-18
    • 1970-01-01
    • 2014-03-05
    • 2012-10-15
    相关资源
    最近更新 更多