Build Qt 5 PostgreSQL Plugin for Android: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(→‎Building: update links to 5.4.1, fix formating for new wiki)
Line 31: Line 31:
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.0/submodules/qtbase-opensource-src-5.4.0.tar.xz After downloading and extracting cd into "qtbase-opensource-src-5.4.0/src/plugins/sqldrivers/psql/"
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"
<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>
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>
<code>ANDROID_EXTRA_LIBS=/path/to/postgresql-9.4.1/src/interfaces/libpq/libpq.so</code>

Revision as of 17:33, 28 February 2015

Overview

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