我正在尝试安装 NVIDIA 版本的工具包,但收到类似“...此声明可能没有外部“C”链接”之类的错误消息

Posted

技术标签:

【中文标题】我正在尝试安装 NVIDIA 版本的工具包,但收到类似“...此声明可能没有外部“C”链接”之类的错误消息【英文标题】:I'm trying to install the NVIDIA version of a toolkit, and I'm getting error messages like "... this declaration may not have extern "C" linkage" 【发布时间】:2020-01-16 15:31:04 【问题描述】:

我正在尝试安装 NVIDIA 版本的外部提供的工具包(就本消息而言,工具包是什么并不重要,这是关于如何使用 nvcc 的问题),我得到了类似“usr/include/c++/6/utility(329): error: this declaration may not have extern "C" links”之类的错误消息。

我不是 C 或 C++ 程序员,但我很高兴在 Makefile 之类的东西上闲逛。我很确定我已将所有路径设置为指向正确的位置,并且 /usr/include/c++/6 包含所有生成错误消息的文件。但我不知道这些错误消息是什么意思,我应该怎么做才能绕过它们。

【问题讨论】:

为什么需要 HTK,还有很多更现代、更准确的工具包。它们也很容易使用。 这真的不是一个有用的答案。我知道存在其他工具包,尤其是 kaldi,并且我有充分的理由想要将 HTK 用于我的特定任务。我喜欢堆栈溢出,但我确实发现你经常因为提出问题而不是得到答案而被告知。 这不是答案,只是评论 【参考方案1】:

我相信这些错误来自 C/C++ 名称修改差异以及 NVCC 编译为 C++ 编译器这一事实。我只需从HCUDA.cu 中删除extern "C" 声明即可编译HTK 3.5:

#ifdef __cplusplus
extern "C" 
#endif

/* ... */

#ifdef __cplusplus

#endif

我怀疑,因为它们已经在 HCUDA.h 中声明了 extern "C",所以它们不需要在 HCUDA.cu 中声明,但我不确定。

【讨论】:

以上是关于我正在尝试安装 NVIDIA 版本的工具包,但收到类似“...此声明可能没有外部“C”链接”之类的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

链接器无法加载Nvidia Management Library

NVIDIA OpenCL 设备版本

Tensorflow/nvidia/cuda docker 版本不匹配

在 Ubuntu 上禁用 NVIDIA 3D Vision 立体

安装nvidia驱动

支持 Nvidia CUDA Toolkit 9.2