gpt4 book ai didi

c++ - 在 NDK 中启用链接时间优化时出现链接器错误

转载 作者:行者123 更新时间:2023-11-28 04:17:42 26 4
gpt4 key购买 nike

当我将标志 -flto 添加到我的 NDK C++ 项目时,链接器发出以下错误:“优化级别必须介于 0 和 3 之间”,即使我的优化级别明确设置为 3通过 -O3.

有人知道怎么解决吗?

编译器标志是通过 Gradle 传递的,据我所知,它应该将标志传递给 Clang 编译器和链接器。当我删除 -flto 标志时,一切正常。

注释:

  • 我使用的是 NDK 19.2(撰写本文时的最新版本)。

  • 我还收到警告 "clang++.exe: warning: argument unused during compilation: '-Wa,--noexecstack' [-Wunused-command-line-argument]" 其中如果我在没有链接时间优化的情况下编译,我就没有。

最佳答案

答案分为两部分:

错误是由https://github.com/android-ndk/ndk/issues/721引起的. Clang 的 LTO 插件不接受 -Os-Oz。这是一个错误。

Okay, I might be really stupid, I suppose between 0 and 3 means 1 or 2 :)

实际上是因为您不能使用通用的cppFlags 来设置优化级别。这对应于 CMAKE_CXX_FLAGS,您需要在 CMAKE_CXX_FLAGS_DEBUGCMAKE_CXX_FLAGS_RELEASE(和/或它们的 C 风格)中设置它们。 CMake 在这些变量中有自己的默认值,命令行构建为 ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE},因此您的 -O3 被默认覆盖。

关于c++ - 在 NDK 中启用链接时间优化时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56238019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com