Mingw x64 Windows:需要插件来处理lto对象

14

当我尝试使用64位mingw(x86_64-5.1.0-posix-seh-rt_v4-rev0)编译我的项目时,我收到了以下信息:

BFD: my/project/dir/filename.cpp.obj: plugin needed to handle lto object

对于每个源文件而言,使用32位的mingw编译器(i686-5.1.0-posix-dwarf-rt_v4-rev0),一切都正常。

我的标志是:

CXX_FLAGS "-fno-exceptions -fno-rtti -std=c++14 -O3 -fstrict-aliasing -flto -fomit-frame-pointer -march=native -ffast-math -funroll-loops"
LINKER_FLAGS "-O1 -s"

我尝试添加了-fuse-linker-plugin和-fno-use-linker-plugin,但并没有帮助。

我的操作系统是64位的Windows 10。我使用CLion和CMake,如果有关系的话,不过应该没有。

我该如何解决这个问题?

1个回答

15
将 LTO 插件放入 bfd-plugins 目录中:
mkdir mingw64\lib\bfd-plugins
cp mingw64\libexec\gcc\x86_64-w64-mingw32\5.1.0\liblto_plugin-0.dll mingw64\lib\bfd-plugins\liblto_plugin-0.dll

1
你知道为什么这个在安装过程中没有完成吗? - EvgeniyZh
我认为这是因为存在多个插件(gcc/llvm),但目前只能自动加载一个。 - ssbssa
似乎不再起作用了(自MinGW64版本7.1.0起)。 - Paulo Carvalho
1
当启用 -Wa,-mbig-obj 汇编器标志时,那就不起作用了。这似乎是一个错误:https://bugs.archlinux.org/task/53859。 - Paulo Carvalho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接