我使用的是最新的Android NDK R6B建立我的共享对象。此库不使用任何类型的STL的所有,但生成的.so包括许多STL类的东西的std :: bad_alloc_what(无效)等等,这大大增加了二进制的大小。发布版本也包含这个垃圾。 APP_STL在任何地方都没有定义,NDK r5b也只生成使用函数的小二进制。它是r6b的bug吗?我如何用r6b构建没有STL的东西?如何在没有STL的情况下构建Android NDK .so?
回答
似乎存在NDK R6B一个错误,它总是建立图书馆与异常的支持,即使没有明确指定-fno-exceptions
。
详见这个问题:Android NDK produce unreasonable big binaries, how to optimize .so size?
我想你是对的。看来,我应该继续使用'旧'r5 NDK。 Спасибо。 – trashkalmar
如果您正在使用,也就是说,new
那么你就含蓄地使用了std::bad_alloc
例外的标准库。除非你调用new
无掷版本,这将改用std::nothrow
。如果你不使用标准库,那么它将不会被链接。只要确保你没有,如果这就是你想要的,或者只是移动到C?
我我确定我不在任何地方使用STL,因为正如我所说的,r5b在没有任何STL引用的情况下构建库。 – trashkalmar
@trashkalmar:那么你甚至不直接或间接地在整个代码中使用'new'?任何机会r6b正在建设与例外启用和r5b不是? –
当然,我多次使用'new'。我怎样才能弄清楚r6b是否会导致异常?以及如何明确禁用它们?据我所知,Android运行时不支持C++代码中的异常。 – trashkalmar
- 1. ndk构建和.so文件创建android
- 2. 默认情况下,Android NDK工具链二进制文件是否构建有或没有例外情况?
- 3. 在没有Flash Builder的情况下构建Android本机扩展
- 4. 在不创建项目的情况下构建NDK源码
- 5. 如何在没有sudo的情况下构建库?
- 6. 如何在没有CMake的情况下构建yaml-cpp
- 7. 如何在没有构建文件的情况下执行Ant
- 8. 如何在没有丑化的情况下构建Yeoman骨干?
- 9. 如何在没有构建的情况下运行Angular 2(cli)?
- 10. 如何在没有内部模块的情况下构建node.js?
- 11. 如何在没有OpenSSL的情况下构建Python?
- 12. 如何在没有STL的情况下在C++中创建边(v1,v2)列表
- 13. 如何在没有setContent的情况下创建Android选项卡
- 14. 如何在没有手机应用程序的情况下构建Android?
- 15. Android:是否可以在没有SurfaceView的情况下创建SurfaceTexture?
- 16. 如何在不构建所有Android的情况下构建AOSP应用程序?
- 17. 在Android的NDK如何在一个构建运行创建多个库(的.so)
- 18. Android NDK构建.so,但所有包含未解决的包含
- 19. Xamarin:使用NDK构建的.so
- 20. 如何在没有所有JDBC驱动程序的情况下构建Flyway
- 21. 在没有注册的情况下构建VB6项目
- 22. 在没有Eclipse的情况下构建一个Eclipse Eclipse项目
- 23. 我可以在没有设备的情况下进行构建
- 24. 在没有Visual Studio的情况下构建RIA服务项目
- 25. 在没有Web服务器的情况下构建Web服务
- 26. 如何在没有层次结构的情况下遵循xpath?
- 27. 如何在没有结构的情况下部署Django项目
- 28. 如何在没有android SDK的情况下创建Android小部件?
- 29. 如何在没有Java的情况下在Android中播放声音或音乐?
- 30. 我可以在没有NDK的情况下为Android开发OpenCV吗?
这不是一个错误,但我们不得不接受这样的事实:http://code.google.com/p/android/issues/detail?id=19881 –