Cygwin 64 G ++ -fuse-linker-plugin错误

当我尝试编译一个非常基本的C ++程序时,我收到以下错误。

$ g++ -fuse-linker-plugin test.cpp g++: fatal error: -fuse-linker-plugin, but cyglto_plugin.dll not found compilation terminated. 

 int main() { return 0; } 

这是使用直接从新的Cygwin安装中安装的G ++。

如果我在那里search文件,它确实存在,位于:

 /usr/libexec/gcc/x86_64-pc-cygwin/4.8.2/cyglto_plugin.dll 

我如何使Cygwin 64正确地看这个?

我想你只在安装时检查了gcc-g ++包。 请注意,版本是4.8.1-3,但在下一页中,您可以看到许多正在安装的依赖项,例如4.8.2版本的libgcc。

4.8.1和4.8.2的混合似乎是问题所在。

在安装程序中,将所有依赖关系复制到编辑器中,搜索4.8.2以找到有问题的包,返回到安装程序并单击这些包,直到安装4.8.1-3。

仔细检查你没有安装这些软件包的最新版本。

最近使用apt-cyg,安装了g ++ 4.9.2,但是gcc-core 4.8.2仍然存在。

解决方案:

  apt-cyg remove gcc-g++ apt-cyg remove gcc-core apt-cyg install gcc-g++ 

两个版本的gcc导致了问题,检查文件夹/ usr / libexec / gcc / x86_64-pc-cygwin /会有两个版本的gcc。 解决删除一个。

上面的答案适用于我,但是我被安装程序自动将软件包升级到4.8.2。 所以,我最初认为这是行不通的。 它实际上做到了。 你只需要注意,当使用安装程序来添加软件包时,它可能会尝试再次升级到4.8.2并破坏事情。

有选项关闭LTO与-fno-use-linker-plugin ,但是这并没有对我有任何好处,因为CPAN是什么启动g ++。 它可能是一个解决方法。

(我知道这不是一个很大的答案,但我无法评论)