当我尝试编译一个非常基本的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 ++。 它可能是一个解决方法。
(我知道这不是一个很大的答案,但我无法评论)