PDA

View Full Version : mysql plugin on android, requires libmysqlclient_r.so built with android toolchain



stingray
12th September 2013, 23:48
So now im at it again...

trying to compile mysql-connector-c-6.1.1-src, but its a cmake file, and if i open it in qt creator, even thou i have selected arm-android toolchain, it uses the gcc from /usr/bin/gcc, so its successful, but i dont want a unix lib, i want a android lib...


so question is, can i somehow make a .pro file, that i can use to crosscompile this lib?

im pretty sure its possible to port this c code to android without any big modifications, but i dont really know where to start, it seems most i find on google, is about making a toolchain for cmake, so it crosscompiles, i've tryed that, but it just says that the compiler cant make a working testcompile, so the cmake process gets stuffed in the trashbin..


http://www.mymegabyte.com/2011/03/cross-compile-libmysql/

code below is what happens with the toolchain abowe, just switched out the compilers to android-gcc and android-g++ that i symlinked from the ndk r9 toolchains..


stingray@stingray-server:~/src/mysql-connector-c-6.1.1-src/build$ cmake -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..
-- Running cmake version 2.8.10.1
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Check for working C compiler: /home/stingray/Qt/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
-- Check for working C compiler: /home/stingray/Qt/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -- broken
CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
The C compiler
"/home/stingray/Qt/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc"
is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/stingray/src/mysql-connector-c-6.1.1-src/build/CMakeFiles/CMakeTmp



Run Build Command:/usr/bin/make "cmTryCompileExec2945069581/fast"

/usr/bin/make -f CMakeFiles/cmTryCompileExec2945069581.dir/build.make
CMakeFiles/cmTryCompileExec2945069581.dir/build

make[1]: GÃ¥r till katalogen
"/home/stingray/src/mysql-connector-c-6.1.1-src/build/CMakeFiles/CMakeTmp"

/usr/bin/cmake -E cmake_progress_report
/home/stingray/src/mysql-connector-c-6.1.1-src/build/CMakeFiles/CMakeTmp/CMakeFiles
1

Building C object
CMakeFiles/cmTryCompileExec2945069581.dir/testCCompiler.c.o


/home/stingray/Qt/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
GNU -o CMakeFiles/cmTryCompileExec2945069581.dir/testCCompiler.c.o -c
/home/stingray/src/mysql-connector-c-6.1.1-src/build/CMakeFiles/CMakeTmp/testCCompiler.c


arm-linux-androideabi-gcc: error: GNU: No such file or directory

make[1]: *** [CMakeFiles/cmTryCompileExec2945069581.dir/testCCompiler.c.o]
Fel 1

make[1]: Lämnar katalogen
"/home/stingray/src/mysql-connector-c-6.1.1-src/build/CMakeFiles/CMakeTmp"

make: *** [cmTryCompileExec2945069581/fast] Fel 2





CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:99 (PROJECT)


-- Configuring incomplete, errors occurred!


this is also a intresting site http://code.google.com/p/android-cmake/

but its not much on how to use it, or im just plain stupid, cause i cant get it to work..

anyway i guess theres alot of people that have been bitching with this, and since they ported OpenCV, then it has to be possible, but question is how.. :)

stingray
14th September 2013, 22:28
so i guess theres alot of people that accually are intrested in this.. i've bashed my head on this for a while now, and it seems its possible..

https://github.com/0x-ff/libmysql-android

there is a guy who ported libmysql with apis android-8,9,14, and i used his prebuilt api 14 and the sources sqldriver/mysql/mysql.pro and hardcoded in the place where i put the libs just to make sure it found them.. the best part with using sources pro, it put it where it should be in my android-qt-5.1.0 subcat so not even that was needed..

now its test time

stingray
15th September 2013, 09:17
just a little edit to my monolouge.. it puts the qsqlmysql.so in the right path, just that it creates that path inside android, under the pro files folder, so it was almost right..

but the libqsqlmysql created works good on a htc flyer with android 3.2. seems to error on the emulator @ android 3.2, but it was late last night so will have a look and update for future reference..

Tottish
14th February 2014, 10:57
Hey man!
Sounds exciting!

Did you make any more progress on this? Were you able to get it to function stable/fully?
I would sure love to have fully functioning MySQL-support on Android for a project of mine...
/Tottish

stingray
10th July 2014, 15:22
i've taken up this little project again..

used https://github.com/0x-ff/libmysql-android to build the plugin for android_armv7..

wasnt able to use qtcreator to build the mysql.pro

so had to do it in terminal..


stingray@laptop:~/Qt/5.3/Src/qtbase/src/plugins/sqldrivers/mysql$ ~/Qt/5.3/android_armv7/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/home/stingray/Qt/Projekt/libs/android/android14-arm -lmysqlclient_r" mysql.pro
stingray@laptop:~/Qt/5.3/Src/qtbase/src/plugins/sqldrivers/mysql$ make


the only thing is the LIBS path have to point to where you have dl'ed the android14-arm and unpacked them..

anyway it seems to work as it should on my android 3.2 htc flyer.. have not tested on emulator..

as right now i have to rebuild my gui after a little misshap during december when i thought i had backed up my project folder, but it was a old version.. but hey, one step forward three backwards.. one day it might accually be finnished.. hehe..