我正在尝试安装 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
Tensorflow/nvidia/cuda docker 版本不匹配