加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Compiling and linking error when using NDK r10 to build coco

发布时间:2020-12-14 19:36:52 所属栏目:百科 来源:网络整理
导读:If you use NDK r10 to build cocos2d-x v3.2,you will meet a compiling error of all tests and linking error of lua tests. compiling error The error message is /Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.cpp:94:23:er

If you use NDK r10 to build cocos2d-x v3.2,you will meet a compiling error of all tests and linking error of lua tests.

compiling error

The error message is

/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.cpp:94:23:error:
returntypeofout-of-linedefinitionof'cocos2d::BundleReader::tell'
differsfromthatinthedeclaration
ssize_tBundleReader::tell()
^
/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.h:90:14:note:
previousdeclarationishere
longinttell();

This compiling error is fixed in this patch. We are sorry about it.


linking error

After fixing the compiling error,you will meet linking error when building lua test cases or new lua projects

/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:error:/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/libgcc.a(pr-support.o):multipledefinitionof'_Unwind_GetRegionStart'
/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:/Users/minggo/bin/android/android-ndk-r10/sources/cxx-stl/llvm-libc++/libs/armeabi/thumb/libc++_static.a(Unwind-EHABI.o):previousdefinitionhere
/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:error:/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/libgcc.a(pr-support.o):multipledefinitionof'_Unwind_GetLanguageSpecificData'
/Users/minggo/bin/android/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:/Users/minggo/bin/android/android-ndk-r10/sources/cxx-stl/llvm-libc++/libs/armeabi/thumb/libc++_static.a(Unwind-EHABI.o):previousdefinitionhere
clang++:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)

I have created a ticket in Android issue system for it. And NDK developers confirmed it is a bug of NDK r10. And he gave two ways to work around it:

  • requires makefile changes to drop libgcc.a with command line reads "-nodefaultlibs -lstdc++ -latomic -ldl -lm -lc -lcompiler_rt_static"

    Because we don't use standalone toolchain,so changing makefile doesn't work for cocos2d-x.

  • use libc++_shared.so and add LIBCXX_USE_GABIXX:=true in Application.mk which force rebuild libc++ to use gabi++

    This method requires to use shared library and modify Cocos2dxActivity.java to load dependened shared library. We don't want to modify like this,because:

    • We haven't used shared library before which means we haven't tested

    • It will make .apk 0.13M bigger then using static library

    • Google guy will fix it in next NDK version


conclusion

We suggest you not to use NDK r10. Please use NDK r9d instead. If you want to use NDK r10,the following steps can help you work around it:

  • Change long int to ssize_t in the declaration of BundleReader::tell(). You can refer to this pull request for detail information.

  • Change APP_STL:=c++_static to APP_STL:=c++_shared,add LIBCXX_USE_GABIXX:=true in Application.mk,and modify your java activity code to load libc++_shared.so. You can refer to this commit for more detail information


NDK r9d url

  • linux: http://dl.google.com/android/ndk/android-ndk-r9-linux-x86.tar.bz2

  • windows: http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip

  • mac os x: https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2


本文转自http://www.cocos2d-x.org/news/307

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读