Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Build Qt 5 PostgreSQL Plugin for Android: Difference between revisions
No edit summary |
(Gather items into a category:Build. This one also belongs to Android.) |
||
(8 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Build]] | |||
[[Category:Qt for Android]] | |||
{{LangSwitch}} | |||
Building postgresql plugin is pretty straight forward. | Building postgresql plugin is pretty straight forward. | ||
If you don't want to build them yourself you can download the plugin | If you don't want to build them yourself you can download the plugin here[https://drive.google.com/open?id=0ByPpOAN5EsHKfmgwRTFvQUl5Z1NvUnlYMHptTEs0d2xEc24xZ19Jb0ZDMTBpb3JDQ014ZkU]. All you need to do is copy libqsqlpsql.so into /path/to/qt/android_armv7/plugins/sqldrivers/. It's statically linked to libpq! | ||
= Setting up Enviroment Variables = | == Setting up Enviroment Variables == | ||
Compiling only libpq should work fine with android-9 which is what qt-android is currently compiled with. | Compiling only libpq should work fine with android-9 which is what qt-android is currently compiled with. | ||
<code>export ANDROID_NDK_ROOT="/path/to/android/ndk" | |||
SR="$ANDROID_NDK_ROOT/platforms/android-9/arch-arm" | |||
BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-"</code> | |||
= Downloading = | == Downloading == | ||
Posgresql source can be downloaded from http://www.postgresql.org/ftp/source/ These instructions are only tested on the 9.4.1. Once downloaded extract. | Posgresql source can be downloaded from http://www.postgresql.org/ftp/source/ These instructions are only tested on the 9.4.1. Once downloaded extract. | ||
= Building = | == Building == | ||
cd into the postgresql directory and run configure | cd into the postgresql directory and run configure | ||
<code>STRIP="$BR"strip RANLIB="$BR"ranlib OBJDUMP="$BR"objdump AR="$BR"ar CC="$BR"gcc CFLAGS= | <code>STRIP="$BR"strip RANLIB="$BR"ranlib OBJDUMP="$BR"objdump AR="$BR"ar CC="$BR"gcc CFLAGS=--sysroot=$SR CPP="$BR"cpp CPPFLAGS=$CFLAGS \ | ||
./configure --prefix=$SR/usr --host=arm-linux-androideabi --target=arm-linux-androideabi --build="$CHOST" --without-readline</code> | |||
Since android requires that .so files end in .so and not with a version number copy and replace two things in src/Makefile.shlib | Since android requires that .so files end in .so and not with a version number copy and replace two things in src/Makefile.shlib | ||
Line 23: | Line 28: | ||
"lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)" and "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)" | "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)" and "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)" | ||
<code>sed -e 's/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)/lib$(NAME)$(DLSUFFIX)/g' -i src/Makefile.shlib | <code>sed -e 's/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)/lib$(NAME)$(DLSUFFIX)/g' -i src/Makefile.shlib | ||
sed -e 's/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)/lib$(NAME)$(DLSUFFIX)/g' -i src/Makefile.shlib</code> | |||
Next run make. For the driver we only need libpq. | Next run make. For the driver we only need libpq. | ||
<code>make -C src/interfaces/libpq<code> | <code>make -C src/interfaces/libpq</code> | ||
= Building the plugin = | == Building the plugin == | ||
Next download the source for Qt 5 if you don't have it. We only base http://download.qt.io/archive/qt/5.4/5.4. | Next download the source for Qt 5 if you don't have it. We only need base http://download.qt.io/archive/qt/5.4/5.4.1/submodules/qtbase-opensource-src-5.4.1.tar.xz After downloading and extracting cd into "qtbase-opensource-src-5.4.1/src/plugins/sqldrivers/psql/" | ||
Run qmake followed by make< | Run qmake followed by make | ||
<code>qmake "INCLUDEPATH+=/path/to/postgresql-9.4.1/src/interfaces/libpq /path/to/postgresql-9.4.1/src/include" "LIBS+=-L/path/to/postgresql-9.4.1/src/interfaces/libpq/ -lpq" | |||
make install</code> | |||
= Build your Android App = | == Build your Android App == | ||
Finally to build your android app you'll need to add libpq.so. Add this line to your .pro file< | Finally to build your android app you'll need to add libpq.so. Add this line to your .pro file | ||
<code>ANDROID_EXTRA_LIBS=/path/to/postgresql-9.4.1/src/interfaces/libpq/libpq.so</code> |
Latest revision as of 15:07, 25 November 2016
En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh
Building postgresql plugin is pretty straight forward.
If you don't want to build them yourself you can download the plugin here[1]. All you need to do is copy libqsqlpsql.so into /path/to/qt/android_armv7/plugins/sqldrivers/. It's statically linked to libpq!
Setting up Enviroment Variables
Compiling only libpq should work fine with android-9 which is what qt-android is currently compiled with.
export ANDROID_NDK_ROOT="/path/to/android/ndk"
SR="$ANDROID_NDK_ROOT/platforms/android-9/arch-arm"
BR="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-"
Downloading
Posgresql source can be downloaded from http://www.postgresql.org/ftp/source/ These instructions are only tested on the 9.4.1. Once downloaded extract.
Building
cd into the postgresql directory and run configure
STRIP="$BR"strip RANLIB="$BR"ranlib OBJDUMP="$BR"objdump AR="$BR"ar CC="$BR"gcc CFLAGS=--sysroot=$SR CPP="$BR"cpp CPPFLAGS=$CFLAGS \
./configure --prefix=$SR/usr --host=arm-linux-androideabi --target=arm-linux-androideabi --build="$CHOST" --without-readline
Since android requires that .so files end in .so and not with a version number copy and replace two things in src/Makefile.shlib
"lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)" and "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" with "lib$(NAME)$(DLSUFFIX)"
sed -e 's/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)/lib$(NAME)$(DLSUFFIX)/g' -i src/Makefile.shlib
sed -e 's/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)/lib$(NAME)$(DLSUFFIX)/g' -i src/Makefile.shlib
Next run make. For the driver we only need libpq.
make -C src/interfaces/libpq
Building the plugin
Next download the source for Qt 5 if you don't have it. We only need base http://download.qt.io/archive/qt/5.4/5.4.1/submodules/qtbase-opensource-src-5.4.1.tar.xz After downloading and extracting cd into "qtbase-opensource-src-5.4.1/src/plugins/sqldrivers/psql/"
Run qmake followed by make
qmake "INCLUDEPATH+=/path/to/postgresql-9.4.1/src/interfaces/libpq /path/to/postgresql-9.4.1/src/include" "LIBS+=-L/path/to/postgresql-9.4.1/src/interfaces/libpq/ -lpq"
make install
Build your Android App
Finally to build your android app you'll need to add libpq.so. Add this line to your .pro file
ANDROID_EXTRA_LIBS=/path/to/postgresql-9.4.1/src/interfaces/libpq/libpq.so