Unable to build for Android with both QMake and CMake



  • Hello

    I'm trying to build an application for Android using Qt 5.10, I've followed the articles on:

    http://doc.qt.io/qt-5/android-support.html
    http://wiki.qt.io/Android

    Builts were fine and installed, I've used the following invocations:

    (for amd64)

    ~/qt/configure -xplatform android-g++ --disable-rpath -nomake tests -nomake examples -android-ndk ~/.local/share/ndk-bundle -android-sdk ~/.local/share -android-ndk-host linux-x86_64 -android-toolchain-version 4.9 -skip qttranslations -skip qtserialport -no-warnings-are-errors -prefix ~/.local/lib/qt/x86_64 -android-arch x86_64 -android-ndk-platform android-24 -opensource -confirm-license
    

    (for arm)

    ~/qt/configure -xplatform android-g++ --disable-rpath -nomake tests -nomake examples -android-ndk ~/.local/share/ndk-bundle -android-sdk ~/.local/share -android-ndk-host linux-x86_64 -android-toolchain-version 4.9 -skip qttranslations -skip qtserialport -no-warnings-are-errors -prefix ~/.local/lib/qt/arm -android-arch armeabi-v7a -android-ndk-platform android-24 -opensource -confirm-license
    

    And installed NDK + SDK tools under the following tree:

    • ~/.local/share
      • ndk-bundle
      • platforms
        • android-24
      • system-images
        • android-24
      • emulator
      • android (the tools extracted here)
      • tools (the additional tools)

    I've setup the kits like this:

    alt text

    Using CMake, I get the following error:

        "/home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++"
    
      is not able to compile a simple test program.
    
      It fails with the following output:
    
        Change Dir: /tmp/QtCreator-kKSAbZ/qtc-cmake-XXyhI3dl/CMakeFiles/CMakeTmp
        
        Run Build Command:"/usr/bin/ninja-build" "cmTC_95308"
        [1/2] Building CXX object CMakeFiles/cmTC_95308.dir/testCXXCompiler.cxx.o
        [2/2] Linking CXX executable cmTC_95308
        FAILED: cmTC_95308 
        : && /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ --sysroot=/home/markand/.local/share/ndk-bundle/sysroot    -rdynamic CMakeFiles/cmTC_95308.dir/testCXXCompiler.cxx.o  -o cmTC_95308   && :
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtend_android.o: No such file or directory
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lstdc++
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lm
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lc
        /home/markand/.local/share/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl
        collect2: error: ld returned 1 exit status
        ninja: build stopped: subcommand failed.
    

    Using QMake I get the following error:

    10:10:47: Starting: "/usr/bin/make" 
    /home/markand/.local/share/ndk-bundle/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-g++ -c -D__ANDROID_API__=16 --sysroot=/home/markand/.local/share/ndk-bundle/sysroot -isystem /home/markand/.local/share/ndk-bundle/sysroot/usr/include/x86_64-linux-android -isystem /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86_64/include -fstack-protector-strong -DANDROID -g -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../Test -I. -I../../.local/lib/qt/x86_64/include -I../../.local/lib/qt/x86_64/include/QtQuick -I../../.local/lib/qt/x86_64/include/QtGui -I../../.local/lib/qt/x86_64/include/QtQml -I../../.local/lib/qt/x86_64/include/QtNetwork -I../../.local/lib/qt/x86_64/include/QtCore -I. -I../../.local/lib/qt/x86_64/mkspecs/android-g++ -o main.o ../Test/main.cpp
    In file included from /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/random:38:0,
                     from /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_algo.h:66,
                     from /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/algorithm:62,
                     from ../../.local/lib/qt/x86_64/include/QtCore/qglobal.h:110,
                     from ../../.local/lib/qt/x86_64/include/QtGui/qtguiglobal.h:43,
                     from ../../.local/lib/qt/x86_64/include/QtGui/qguiapplication.h:43,
                     from ../../.local/lib/qt/x86_64/include/QtGui/QGuiApplication:1,
                     from ../Test/main.cpp:1:
    /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/cmath:1118:11: error: '::log2' has not been declared
       using ::log2;
               ^
    /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/cmath:1119:11: error: '::log2f' has not been declared
       using ::log2f;
               ^
    /home/markand/.local/share/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/cmath:1120:11: error: '::log2l' has not been declared
       using ::log2l;
    

    What do I miss or doing wrong?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.