[odb-users] ODB on Android
Wolfgang Haupt
haupt.wolfgang at gmail.com
Tue Apr 14 10:11:27 EDT 2020
On 14.04.20 14:56, c.sell at byterefinery.de wrote:
> Hi,
>
> IMO and according to my experience, the ODB compiler has no dependency
> on the target system, including the c/c++ libraries. After all, it is
> just a code generator. As long as it generates valid standard C++
> code, it should work on any system.
>
> I have compiled on ealier NDKs without issues.
>
> Chris
Yeah, that's what I think as well.
However, until now I face various low level issues that are hard for me
to track down.
My run with NDK 17c finished, everything compiled but I'm stuck with a
linker error.
Not sure what's that about, but seems to be related to the standard library.
//home/a1rwulf/Android/omniyon-depends/arm-linux-androideabi-21-release/lib/libodb-sqlite.a(options.o):options.cxx:function
std::__ndk1::basic_filebuf<char, std::__ndk1::char_traits<char>
>::imbue(std::__ndk1::locale const&): error: undefined reference to
'std::__ndk1::codecvt<char, char, __mbstate_t>::id'//
///home/a1rwulf/Android/omniyon-depends/arm-linux-androideabi-21-release/lib/libodb-sqlite.a(options.o):options.cxx:function
std::__ndk1::basic_filebuf<char, std::__ndk1::char_traits<char>
>::basic_filebuf(): error: undefined reference to
'std::__ndk1::codecvt<char, char, __mbstate_t>::id'//
///home/a1rwulf/Android/omniyon-depends/arm-linux-androideabi-21-release/lib/libodb-sqlite.a(options.o):options.cxx:function
std::__ndk1::basic_filebuf<char, std::__ndk1::char_traits<char>
>::basic_filebuf(): error: undefined reference to
'std::__ndk1::codecvt<char, char, __mbstate_t>::id'//
//clang60++: error: linker command failed with exit code 1 (use -v to
see invocation)//
//CMakeFiles/kodi.dir/build.make:538: recipe for target 'libkodi.so'
failed//
//make[2]: *** [libkodi.so] Error 1//
//CMakeFiles/Makefile2:755: recipe for target 'CMakeFiles/kodi.dir/all'
failed//
//make[1]: *** [CMakeFiles/kodi.dir/all] Error 2//
//Makefile:129: recipe for target 'all' failed//
//make: *** [all] Error 2/
BR,
Wolfgang
>
> Zitat von Wolfgang Haupt <haupt.wolfgang at gmail.com>:
>
>> On 14.04.20 12:02, Boris Kolpackov wrote:
>>> Wolfgang Haupt <haupt.wolfgang at gmail.com> writes:
>>>
>>>> And I can cross-compile libodb and libodb-sqlite+libodb-mysql just
>>>> fine.
>>>>
>>>> However I struggle to see how this will work together with the odb
>>>> compiler.
>>> You would normally use native ODB compiler for your development
>>> machine.
>>> So if you are using x86-64 Linux to develop for ARM Android, then you
>>> would run x86-64 Linux ODB compiler, generate the database support
>>> source code (the source code is the same for all the platforms), then
>>> compile that for ARM Android along with your other source code, and
>>> finally link everything together with cross-compiled libodb*.
>>>
>>> It may be possible to build a native ODB compiler for Android but we
>>> haven't tried (you will most likely need to build GCC from scratch
>>> with plugin support).
>>
>> Hey Boris,
>>
>> thx for your clarification - seems the procedure works better when I
>> use version 17 of the
>> android ndk.
>> I'm still in the compilation process, so I can probably report back
>> once it is finished.
>>
>> Given the earlier mentioned errors just disappear when using the 17
>> NDK, I wonder how/if it is possible
>> for the odb compiler (on the host machine) to generate valid c++ code
>> for the target, when the target probably
>> uses a completely different standard c/c++ library and has no support
>> for GCC at all.
>>
>>> It may be possible to build a native ODB compiler for Android but we
>>> haven't tried (you will most likely need to build GCC from scratch
>>> with plugin support).
>> I do not want to go this way either if not possbile, sounds like pain
>> to me.
>> Does that mean you have tried to use odb on a recent android ndk >= 18?
>>
>>
>> Best Regards,
>> Wolfgang
>
>
>
More information about the odb-users
mailing list