我有一个Android的NDK共享库项目,使用Clang和Cmake。
当我加上
-flto
对于C/C++标志,我会得到以下错误:
terminating with uncaught exception of type std::bad_alloc: std::bad_alloc
clang++: error: unable to execute command: Aborted (core dumped)
clang++: error: linker command failed due to signal (use -v to see invocation)
ninja: build stopped: subcommand failed.
-flto公司
进入之内
CMAKE_C_FLAGS_RELEASE
和
CMAKE_CXX_FLAGS_RELEASE
.
我还将RAM内存增加到了我的Linux虚拟机的10gb。在Windows7上进行了测试,得到了相同的结果。Android Studio和NDK+SDK是最新版本。
对于测试,只需将以下行添加到您的cmake项目中;
string(CONCAT CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} " -flto ")
string(CONCAT CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} " -flto ")
string(CONCAT CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} " -flto -fuse-ld:gold ") # optional
我也试着加上
-flto -fuse-ld:gold
CMAKE_SHARED_LINKER_FLAGS_RELEASE
. Android studio Cmake在这条消息上输出stucks;我等了30分钟,但它保持原样。
End of search list.
[36/36] Linking CXX shared library ../../../../build/intermediates/cmake/release/obj/x86_64/libnative-lib.so
我可以通过添加
进入之内
CMAKE_SHARED_LINKER_FLAGS_发布
,但不是在C/C++标志中。
我希望我能为这个问题提供足够的信息。