我想使用新的android ndk r8e编译源代码(SDL和类似的东西)。更改日志指出“在GCC 4.7,4.6,Clang 3.2和Clang 3.1中启用-flto”。所以我已经将-flto添加到LOCAL_CFLAGS,LOCAL_CPPFLAGS和LOCAL_LDFLAGS。但优化和体系结构标志不在链接器调用中,因此不进行优化(也称为慢速二进制)。链接器也会失败,因为它无法从某些.S文件中找到这些函数,并且某些指令在拇指模式下不可用。没有-flto,一切都很好。
那么如何正确使用链接时优化以及如何避免这个问题呢?不,将我自己的优化/架构标志添加到LOCAL_LDFLAGS是没有答案的,因为我想使用NDK而不是我自己的hacky构建脚本。
链接时优化也在amd64(非android)上使用自己的构建脚本进行了测试,并且工作正常(编译,链接和20%速度优势)。所以请保留NDK构建系统的答案。