xilinx - Xilinx sdk:链接器不会链接cross-c/c++
问题描述
我正在使用 Xilinx SDK 为 Zynq 7020 进行编译。
我遇到的问题的一个例子是这个
一些文件.c:
void someFunction () { }
一些文件.h
void someFunction () ;
主文件
extern "C" {
#include "SomeFile.h"
}
int main ( int , char const* * ) {
someFunction () ; // This line
return 0 ;
}
标记为“此行”的行出现链接器错误,因为它找不到符号“someFunction”。
我知道该.c
文件正在编译(如果我在其中放入垃圾字符,则无法构建)。我知道它具有相同的原型(但是,使用 C 链接,没关系)。
Xilinx 套件似乎没有在 C/C++ 目标文件之间运行链接器,我不知道如何说服它这样做。
我该如何解决?
注意:这是使用 gnu 工具链。
解决方案
所以事实证明这是因为 Xilinx SDK 默认.c
使用 g++ 编译文件,而不是 gcc,它发出了 C++ 错误名称someFunction
而不是 C 名称。然后,当.cpp
文件用来extern "C"
引用它时,它正在寻找一个 C 风格的符号,而不是 C++ 风格的 [mangled] 符号。
我必须右键单击.c
文件才能进入它们的构建设置并手动将编译器更改为whatever-whatever-g++
它whatever-whatever-gcc
可以工作。
推荐阅读
- angular - Docker Angular运行脚本问题
- nlp - 有没有办法在 Spacy 中关闭特定的内置标记化规则?
- ruby-on-rails - 我应该在 Gemfile 中设置显式版本吗?
- android - Java-如何从另一个 AsyncTask 启动一个 AsyncTask
- python-3.x - wxPython,制作一个窗口模式
- phaser-framework - Phaser 3 - 如何创建平滑的缩放效果
- ruby-on-rails - 如何处理 Collection 缓存和 i18n?
- android - 如何最小化我们的活动并将其显示为浮动按钮?
- excel - 单击并将代码应用于Excel中的所有选项卡时如何突出显示行
- javascript - while ($row = mysqli_fetch_array($result)) + JAVASCRIPT 错误