【发布时间】:2019-05-21 12:11:15
【问题描述】:
当我将标志 -flto 添加到我的 NDK C++ 项目时,链接器会发出以下错误:“优化级别必须介于 0 和 3 之间”,即使我的优化级别通过 -O3. 明确设置为 3
有人知道怎么解决吗?
编译器标志是通过 Gradle 传递的,据我所知,它应该将标志传递给 Clang 编译器和链接器。当我删除 -flto 标志时,一切正常。
注意事项:
我正在使用 NDK 19.2(我写这篇文章时的最新版本)。
如果我在没有链接时间优化的情况下进行编译,我也会收到警告
"clang++.exe: warning: argument unused during compilation: '-Wa,--noexecstack' [-Wunused-command-line-argument]"。
【问题讨论】:
-
好吧,我可能真的很蠢,我想 0 和 3 之间的意思是 1 或 2 :)
-
-O3的设置如何? -
同样通过 gradle,我觉得 flto 和 O3 不兼容很奇怪
-
但是怎么做呢?你在打什么?你要改变什么变量?
-
感谢您抽出宝贵时间,我已将相关的原生构建配置放在此文件中:toppluva.com/misc/gradle_flto.txt 唯一的构建参数是 gradle 部分中的 -flto。
标签: c++ android-ndk android-gradle-plugin clang++