Quantcast
Channel: Qt DevNet forums: Installation and Deployment
Viewing all articles
Browse latest Browse all 2113

Cannot compile Qt 5.2 from Git for Android including mysql support

$
0
0
Hey all, I’m having a difficult time compiling qt5 for android with mysql support. I’ve downloaded the mariadb connector sources, and configured CMake for mariadb to utilize the android toolchain (compiled and installed into API-9 for ARM in this case). However, when I run configure with the following switches: ./configure -prefix /home/rich/local/qt5android -xplatform android-g++ -nomake tests -nomake examples -android-ndk /opt/android-ndk -android-sdk /opt/android-sdk-update-manager -android-ndk-host linux-x86_64 -android-toolchain-version 4.8 -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples -no-warnings-are-errors -system-proxies -no-cups -plugin-sql-mysql -opensource -confirm-license -developer-build -debug -v I get errors about missing pthread, rt, and mysqlclient_r libraries: /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ —sysroot=/opt/android-ndk/platforms/android-9/arch-arm/ Wl,-no-undefined -Wl,-z,noexecstack -shared -o mysql_r mysql.o -L/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -L/opt/android-ndk/platforms/android-9/arch-arm//usr/lib -L/usr/lib64/mysql -lpthread -lz -lm -lrt -lssl -lcrypto -ldl -lmysqlclient_r -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lpthread /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lrt /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: warning: skipping incompatible /usr/lib64/mysql/libmysqlclient_r.so while searching for mysqlclient_r /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lmysqlclient_r collect2: error: ld returned 1 exit status gmake: *** [mysql_r] Error 1 MySQL (thread-safe) disabled. MySQL (thread-unsafe) auto-detection… () /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ c -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,-noexecstack -std=gnu++0x -O2 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wall -Wno-psabi -W -fPIE -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -I../../../mkspecs/android-g++ -I. -I/usr/include/mysql -I/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/include -I/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I/opt/android-ndk/platforms/android-9/arch-arm/usr/include -o mysql.o mysql.cpp /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ —sysroot=/opt/android-ndk/platforms/android-9/arch-arm/ Wl,-no-undefined -Wl,-z,noexecstack -shared -o mysql mysql.o -L/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -L/opt/android-ndk/platforms/android-9/arch-arm//usr/lib -L/usr/lib64/mysql -lpthread -lz -lm -lrt -lssl -lcrypto -ldl -lmysqlclient -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lpthread /opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lrt collect2: error: ld returned 1 exit status gmake: *** [mysql] Error 1 MySQL (thread-unsafe) disabled. MySQL support cannot be enabled due to functionality tests! Here’s the contents of my lib dir under my API 9 sysroot: ls /opt/android-ndk/platforms/android-9/arch-arm/usr/lib crtbegin_dynamic.o  libcrypto.a      libGLESv2.so        libmariadb.so.1   libncurses++.a  libreadline.so.6  libtinfo.a crtbegin_so.o       libc.so          libhistory.a        libmenu.a         libncurses_g.a  libssl.a          libtinfo_g.a crtbegin_static.o   libdl.so         libhistory.so.6     libmenu_g.a       libncurses_p.a  libstdc++.a       libtinfo_p.a crtend_android.o    libEGL.so        libjnigraphics.so   libmenu_p.a       libOpenSLES.so  libstdc++.so      libz.so crtend_so.o         libform.a        liblog.so           libm_hard.a       libpanel.a      libthread_db.so   pkgconfig engines             libform_g.a      libm.a              libm.so           libpanel_g.a    libtic.a          terminfo libandroid.so       libform_p.a      libmariadbclient.a  libmysqlclient.a  libpanel_p.a    libtic_g.a libc.a              libGLESv1_CM.so  libmariadb.so       libncurses.a      libreadline.a   libtic_p.a Note that the ‘libmysqlclient.a’ file is actually a symlink to libmariadbclient.a (IIRC, the API is the exact same, and so all symbols should line up. This does not happen out of the box, I made the symlink manually). Why is the qt5 configure script complaining about these missing libs (especially pthread and rt)? Also, I was unable to figure out how to generate any “lib*client_r.{a,so}” libraries for mariadb. What can I do to manually tweak what Qt is looking for in its configure script (pthread and rt are built-in and should not be attempting to link), as it’s clearly broken? It also bugs me that at the tail end of the compile command (where it fails for the first time), the compiler is being passed a “-L/usr/lib64/mysql”, which is the host mysql library folder and not the target mysql library. Why is that being passed in at all?

Viewing all articles
Browse latest Browse all 2113

Trending Articles