Cygwin gcc 正在为我的符号添加下划线“_”前缀。我在哪里可以找到有关此行为的文档?

Posted

技术标签:

【中文标题】Cygwin gcc 正在为我的符号添加下划线“_”前缀。我在哪里可以找到有关此行为的文档?【英文标题】:Cygwin gcc is adding an underbar "_" prefix to my symbols. Where can I find documentation on this behavior? 【发布时间】:2011-01-08 07:47:43 【问题描述】:

我第一次尝试在 cygwin 上编译一个 gcc 项目。构建失败,因为下划线是所有符号的前缀。这导致符号与没有前导下划线的 GLIB 库(通过 CYGWIN 包管理系统安装)不匹配。这种放置前导下划线的趋势是否记录在某个地方?

【问题讨论】:

你能显示你的编译和链接命令吗? 【参考方案1】:

使用-fleading-underscore 和/或-fno-leading-underscore 获得您想要的行为。 This question 有很多与你正在做的事情相关的信息。

【讨论】:

根据您链接的问题,这些选项对cygwin gcc没有影响。【参考方案2】:

Cygwin 的编译器会这样做,因为 Visual C++ 会这样做。他们试图最小化两者之间不必要的差异的数量,以帮助将用一个构建的代码与另一个构建的代码联系起来。通常还有其他因素会阻止您在 Visual C++ 中使用 Cygwin 代码,反之亦然,但这不是其中之一。

【讨论】:

以上是关于Cygwin gcc 正在为我的符号添加下划线“_”前缀。我在哪里可以找到有关此行为的文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何在cygwin中将-pg传递给gcc

gcc:架构 x86_64 的未定义符号,缺少 vtable

将 std::wstring 移植到 gcc cygwin

Windows 上的 Matlab:将“mex”默认编译器更改为 Cygwin 的 GCC [重复]

win10下安装Cygwin配置gcc编译环境

GCC 8.1.0/MinGW64 编译的 OpenMP 程序崩溃寻找 cygwin.s?