pelya/libiconv-libicu-android

Linking error with NDK r17c

Opened this issue · 3 comments

Hi, great work!
I'm trying to build your repo and getting an error.
I'm using NDK r17c (17.2.4988734, you can find it here)
I'm on Ubuntu 18.04

*** Warning: Linking the shared library libicu-le-hb.la against the
*** static library /home/david/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++abi.a is not portable!
libtool: link: /home/david/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -shared -nostdlib crtbegin_so.o  .libs/libicu_le_hb_la-LayoutEngine.o .libs/libicu_le_hb_la-LEFontInstance.o .libs/libicu_le_hb_la-LEGlyphStorage.o .libs/libicu_le_hb_la-LEInsertionList.o .libs/libicu_le_hb_la-loengine.o .libs/libicu_le_hb_la-ScriptAndLanguageTags.o   -L/home/david/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64 -landroid -llog -latomic /home/david/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++_static.a /home/david/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++abi.a -L/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/lib /home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/harfbuzz-1.4.6/../lib/libharfbuzz.so -L/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64 -L/home/david/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/6.0.2/lib/linux/x86_64 -L/home/david/Android/Sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x -L/home/david/Android/Sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/lib/../lib64 -L/home/david/Android/Sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/lib -L/home/david/Android/Sdk/ndk-bundle/sysroot/usr/lib -lstdc++ -lm -lc -lgcc -ldl crtend_so.o  --sysroot=/home/david/Android/Sdk/ndk-bundle/sysroot -O2 --sysroot=/home/david/Android/Sdk/ndk-bundle/sysroot -O2 -Wl,--exclude-libs -Wl,libgcc.a -Wl,--exclude-libs -Wl,libatomic.a --sysroot /home/david/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86_64 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z -Wl,noexecstack -Wl,-z -Wl,relro -Wl,-z -Wl,now   -o .libs/libicu-le-hb.so.0.0.0
.libs/libicu_le_hb_la-LayoutEngine.o: In function `LayoutEngine':
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LayoutEngine.cpp:206: undefined reference to `icu_62::UObject::~UObject()'
.libs/libicu_le_hb_la-LayoutEngine.o: In function `icu_62::LayoutEngine::~LayoutEngine()':
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LayoutEngine.cpp:213: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LayoutEngine.cpp:213: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LayoutEngine.cpp:213: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LayoutEngine.cpp:213: undefined reference to `icu_62::UObject::~UObject()'
.libs/libicu_le_hb_la-LayoutEngine.o:(.data.rel.ro+0x40): undefined reference to `typeinfo for icu_62::UObject'
.libs/libicu_le_hb_la-LEFontInstance.o: In function `~LEFontInstance':
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEFontInstance.cpp:31: undefined reference to `icu_62::UObject::~UObject()'
.libs/libicu_le_hb_la-LEFontInstance.o:(.data.rel.ro+0x140): undefined reference to `typeinfo for icu_62::UObject'
.libs/libicu_le_hb_la-LEGlyphStorage.o: In function `icu_62::LEGlyphStorage::~LEGlyphStorage()':
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEGlyphStorage.cpp:31: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEGlyphStorage.cpp:31: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEGlyphStorage.cpp:31: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEGlyphStorage.cpp:31: undefined reference to `icu_62::UObject::~UObject()'
.libs/libicu_le_hb_la-LEGlyphStorage.o:(.data.rel.ro+0xa8): undefined reference to `typeinfo for icu_62::UObject'
.libs/libicu_le_hb_la-LEInsertionList.o: In function `icu_62::LEInsertionList::~LEInsertionList()':
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEInsertionList.cpp:34: undefined reference to `icu_62::UObject::~UObject()'
/home/david/app/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src/LEInsertionList.cpp:34: undefined reference to `icu_62::UObject::~UObject()'
.libs/libicu_le_hb_la-LEInsertionList.o:(.data.rel.ro+0x40): undefined reference to `typeinfo for icu_62::UObject'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:455: recipe for target 'libicu-le-hb.la' failed
make[1]: *** [libicu-le-hb.la] Error 1
make[1]: Leaving directory '/home/david/dev/android/AppAndroid/Boost-for-Android/libiconv-libicu-android/x86_64/icu-le-hb-1.0.3/src'
Makefile:446: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

I'm also getting:

clang++: error: no such file or directory: './.libs/libharfbuzz.so'

Would appreciate your help.

pelya commented

Hi, I tried all of the repository's revisions both with NDK r17 and NDK r18. None of them worked :(

The last revision with ndk r18 also gives the two errors I listed above (possibly also more, those are the ones I spotted. Exact version is 18.1.5063045.

Will appreciate your help in the matter, our code is heavily dependent on cryptopp.

It's solved in dec1/Boost-for-Android#15, thanks a lot.