代码之家  ›  专栏  ›  技术社区  ›  Phillip

clang-flto在Android上不工作

  •  1
  • Phillip  · 技术社区  · 8 年前

    我有一个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++标志中。

    我希望我能为这个问题提供足够的信息。

    0 回复  |  直到 8 年前