Library 'mysql' is not defined.



  • I tried everything. Now I'm trying to compile the driver but I had this issu. Please, help-me. I'm using Win7 64 bit with Qt 32 bits and MySql 32bit with XAMPP.


  • Moderators

    @RodrigoFBM

    Hi and welcome to devnet forum

    Where and when you are getting this error message?
    Please post the original error output message.

    Do you have a library for mysql installed for linking?
    Since you are posting in mobile/embedded forum, what is your target platform?
    Where did you get the Qt libs from?



  • @koahnig Thnx very much.

    The commands and error:

    Setting up environment for Qt usage...
    
    C:\Qt\5.10.0\mingw53_32>set mysql=C:\MySQL\MyServer
    
    C:\Qt\5.10.0\mingw53_32>cd C:\Qt\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql
    
    C:\Qt\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=%mysql%
    \\include" "LIBS+=%mysql%\\lib\\libmysql.lib" -o Makefile mysql.pro
    
    Cannot read C:/Qt/5.10.0/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: The system cannot find the specified file.
    Project ERROR: Library 'mysql' is not defined.
    

    I'm have MySql connector C and MySqlServer 5.7 installed and XAMPP.
    The target is for Android armv7


  • Moderators

    @RodrigoFBM said in Library 'mysql' is not defined.:

    The commands and error:

    Setting up environment for Qt usage...
    
    C:\Qt\5.10.0\mingw53_32>set mysql=C:\MySQL\MyServer
    

    What is the path above?

    C:\Qt\5.10.0\mingw53_32>cd C:\Qt\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql

    C:\Qt\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql>qmake "INCLUDEPATH+=%mysql%
    \include" "LIBS+=%mysql%\lib\libmysql.lib" -o Makefile mysql.pro

    Cannot read C:/Qt/5.10.0/Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: The system cannot find the specified file.
    Project ERROR: Library 'mysql' is not defined.

    That looks tome like you are doing MinGW compilation for your desktop,correct?

    I'm have MySql connector C and MySqlServer 5.7 installed and XAMPP.
    The target is for Android armv7

    Since you like to use MySql on Android, you would need the mysql for Android as well.



  • @koahnig said in Library 'mysql' is not defined.:

    • Where I've installed the MySql Server.

    • Yes

    • Where do I find MySQL for Android? How to proceed this MySQL in Qt?


  • Moderators

    @RodrigoFBM

    You would need the connector/C++ installed stuff installed and that folder or a subfolder seem to make more sense. However, I have not done that myself yet.

    You should be aware that you need to cross-compile Qt and all associated stuff for Android as well. In your case it would be also the mysql connector stuff.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Building the MySQL plugin for Android is described here.



  • @SGaist , hey. Thnkx!

    I modify the sheel script for:

    #!/bin/bash
    # Usage: ./build_libsqlmariadb.so.sh [clean]
    # 2016-07-22 T-bond (https://t-bond.hu) Added Windows-MSYS build support, Added clean option, and output to dir. Added temp build dir. Fixed no getpwent error. More cleaner compile output. Skip for already built libs
    
    # Based on https://gist.github.com/RazZziel/fd607459c1f07a43cdf9
    output_dir="libmariadb_so_output"
    build_dir="build_libmariadb_temp"
    
    export ANDROID_NDK_ROOT="/c/Android/android-ndk-r14b"
    export QT_ROOT="/c/Qt/5.10.0"
     
    SR="$ANDROID_NDK_ROOT/platforms/android-17/arch-arm/"
    BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-"
    no_skips=true
    
    #Clean build and outputs
    if [ "$1" = "clean" ]; then
    	echo "Cleaning..."
    	rm -r -f $build_dir $output_dir
    	echo "Cleaned."
    else
    pushd () {
        command pushd "$@" > /dev/null
    }
    
    popd () {
        command popd "$@" > /dev/null
    }
    
    if [ ! -d $build_dir ]; then
    mkdir $build_dir
    fi
    pushd $build_dir
     
    here="$(dirname "$0")"
    find "$SR" > "$here/rootfs_files_before.txt" || exit 1
    checkChanges() {
            find "$SR" > "$here/rootfs_files_after.txt" || exit 1
            echo "Changes:"
            diff -u "$here/rootfs_files_before.txt" "$here/rootfs_files_after.txt"
    }
    trap checkChanges EXIT
     
    # OpenSSL
    pkg=openssl-1.0.2h.tar.gz
    dir=$(basename $pkg .tar.gz)
     
    if [ ! -d $dir ]; then
            wget -c http://www.openssl.org/source/$pkg
            tar -xf $pkg || exit 1
    fi
     
    pushd $dir
    		if [ ! -f "skip" ] || [ "$no_skips" = true ]; then
    	        RANLIB="$BR"ranlib CC="$BR"gcc ./Configure android-armv7 --prefix=$SR/usr
    	        ANDROID_DEV=$SR/usr make || exit 1
    	        make build_libs || exit 1
            touch skip
        	fi
    popd
     
    # libiconv
    pkg=libiconv-1.14.tar.gz
    dir=$(basename $pkg .tar.gz)
     
    if [ ! -d $dir ]; then
            wget -c http://ftp.gnu.org/pub/gnu/libiconv/$pkg
            tar -xf $pkg || exit 1
    fi
     
    pushd $dir
    		if [ ! -f "skip" ] || [ "$no_skips" = true ]; then
    			#Fix for outdated scripts on Windows T-bond.
    			wget "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD" -O new_config.guess
    			wget "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD" -O new_config.sub
    			\cp new_config.guess build-aux/config.guess
    			\cp new_config.guess libcharset/build-aux/config.guess
    			\cp new_config.sub build-aux/config.sub
    			\cp new_config.sub libcharset/build-aux/config.sub
    			#Fix for outdated scripts on Windows T-bond. END
    			STRIP="$BR"strip RANLIB="$BR"ranlib OBJDUMP="$BR"objdump AR="$BR"ar CC="$BR"gcc CFLAGS=--sysroot=$SR CPP="$BR"cpp CPPFLAGS=$CFLAGS ./configure --host=arm --prefix=$SR/usr --with-sysroot=$SR
    	        make || exit 1
    	        make install || exit 1
    	        touch skip
        	fi
    popd
     
     
    # mariadbclient
     
    version=2.0.0
    pkg=mariadb_client-$version-src.tar.gz
    url=http://archive.mariadb.org/client-native-$version/src/$pkg
     
    # FIXME: This one fails to build, linker errors
    #version=2.1.0
    #pkg=mariadb-connector-c-$version-src.tar.gz
    #url=https://downloads.mariadb.org/f/connector-c-$version/source-tgz/$pkg
     
    dir=$(basename $pkg .tar.gz)
    if [ ! -d $dir ]; then
            wget -c $url
            tar -xf $pkg || exit 1
    fi
    
    pushd $dir
    		if [ ! -f "skip" ] || [ "$no_skips" = true ]; then
    	        sed -i -e "s|ADD_SUBDIRECTORY(unittest/libmariadb)|#ADD_SUBDIRECTORY(unittest/libmariadb)|" CMakeLists.txt
    	        sed -i -e "N; s|typedef unsigned short ushort;\n#endif|#endif\ntypedef unsigned short ushort;|" include/my_global.h
    	        sed -i -e "N; s|SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION.*||" libmariadb/CMakeLists.txt
    	        sed -i -e "N; s|SOVERSION \${CPACK_PACKAGE_VERSION_MAJOR})||" libmariadb/CMakeLists.txt # Pig disgusting: the previous multiline thingie should've done it
    	        sed -i -e "N; s|\${CPACK_PACKAGE_VERSION_MAJOR}||" libmariadb/CMakeLists.txt # Pig disgusting: what the fuck
    	        sed -i '/#ifdef HAVE_GETPWNAM/c#if defined(HAVE_GETPWNAM) && defined(HAVE_GETPWENT)' libmariadb/mf_pack.c #T-bond: Fix the no getpwent error. http://forum.kodi.tv/showthread.php?tid=280134
    	        #DCMAKE_CXX_COMPILER DCMAKE_SYSTEM_VERSION DCMAKE_SYSTEM_NAME WINDOWS ONLY!!!
    	        if [ ! -d "build" ]; then
    	        	mkdir build
    	    	fi
    	        pushd build
    	        PKG_CONFIG_PATH=$SR/usr/lib/pkgconfig cmake \
    			-DCMAKE_BUILD_TYPE=Release \
    			-DCMAKE_C_FLAGS=--sysroot="$SR" \
    			-DCMAKE_INSTALL_PREFIX="$SR/usr" \
    			-DCMAKE_C_COMPILER="$BR"gcc \
    			-DCMAKE_SYSTEM_NAME="Android" \
    			-DCMAKE_SYSTEM_VERSION=1 \
    			-DCMAKE_CXX_COMPILER="$BR"g++ \
    			-DCMAKE_LINKER="$BR"ld \
    			-DCMAKE_AR="$BR"ar \
    			-DCMAKE_NM="$BR"nm \
    			-DCMAKE_OBJCOPY="$BR"objcopy \
    			-DCMAKE_OBJDUMP="$BR"objdump \
    			-DCMAKE_RANLIB="$BR"ranlib \
    			-DCMAKE_STRIP="$BR"strip \
    			-DICONV_INCLUDE_DIR="$SR/usr/include" \
    			-DICONV_LIBRARIES="$SR/usr/lib/libiconv.a" \
    			-DWITH_EXTERNAL_ZLIB=ON \
    			-DZLIB_INCLUDE_DIR="$SR/usr/include" \
    			-DZLIB_LIBRARY="$SR/usr/lib/libz.so" ../ || exit 1
    
    	        make install || exit 1
    	        popd
    	        cp build/libmariadb/*.{a,so} "$SR/usr/lib/mariadb/" || exit 1
    	        touch skip
    	    fi
    popd
     
     
    # qt
    qmake="$QT_ROOT/android_armv7/bin/qmake"
    [ ! -f "$qmake" ] && { echo "Could not find qmake in '$qmake'"; exit 1; }
    [ ! -x "$qmake" ] && { echo "Qmake is not executable in '$qmake'"; exit 1; }
    qtVersion=5.7.0
    pkg=qtbase-opensource-src-$qtVersion.tar.gz
     
    dir=$(basename $pkg .tar.gz)
     
    if [ ! -d $dir ]; then
            wget -c http://download.qt.io/official_releases/qt/${qtVersion%.*}/$qtVersion/submodules/$pkg
            tar -xf $pkg || exit 1
    fi
     
    pushd $dir/src/plugins/sqldrivers/mysql/
    		$qmake "QMAKE_CXX=$BR"g++ "QMAKE_LINK=$BR"g++ "INCLUDEPATH+=$SR/usr/include/mariadb" "LIBS+=$SR/usr/lib/mariadb/libmariadbclient.a $SR/usr/lib/libssl.a $SR/usr/lib/libcrypto.a $SR/usr/lib/libiconv.a" "LIBPATH+=$SR/usr/lib/mariadb" -o Makefile mysql.pro
            make || exit 1
            make install || exit 1
    popd 
    popd
    
    if [ ! -d $output_dir ]; then
    	mkdir $output_dir
    fi
    cp $SR/usr/lib/mariadb/libmariadb.so $output_dir/libmariadb.so
    cp $QT_ROOT/android_armv7/plugins/sqldrivers/libqsqlmysql.so $output_dir/libqsqlmysql.so
     
    echo
    echo "BOOYAH!!!"
    echo
    fi
    

    and save like android.sh in C:\MinGW\msys\1.0\bin directory.
    Then I go to command prompt and type:
    cd C:\MinGW\msys\1.0\bin
    and then:
    sh android.sh

    But I get these errors:

    android.sh: line 31: mkdir: command not found
    android.sh: line 23: pushd: build_libmariadb_temp: No such file or directory
    android.sh: line 35: dirname: command not found
    FIND: incorrect parameter format
    

    Can you helpe me? :/


  • Lifetime Qt Champion

    Are you using a Windows command prompt ?



  • Good afternoon. The topic is old, but still relevant to this day. I decided to try to connect MYSQL for Android.

    Article: https://wiki.qt.io/Build_Qt_5_MySQL_Plugin_for_Android
    Ct 5.10.1
    I write under android
    Faced with difficulties.

    0_1532947356074_2.png


Log in to reply
 

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