I've written an application on c++ with QT providing GUI and database connectivity, and the chosen driver being SQLITE. When i was working on my own system (updated to latest version Ubuntu desctop 11), where Qt4 SDK and sqlite are installed, everything worked. However, attempt to launch my executable on target PC ended in failure.
Here is my pro file:
#-------------------------------------------------
#
# Project created by QtCreator 2011-05-22T09:15:05
#
#-------------------------------------------------
QT += core gui sql
TARGET = Peacecourse
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
goodtable.cpp
HEADERS += mainwindow.h \
peaceCon.h \
goodtable.h
FORMS += mainwindow.ui \
goodtable.ui
CONFIG += static
#wince*: DEPLOYMENT_PLUGIN += qsqlite
For deployment all i did was copy my executable file (as that worked on my own system). As a result, i got message about lack of QSQLITE driver, and naturally program didn't run any further.
Some pieces of information about target system: it is Ubuntu, moderately old, as far as i ould determine; i have no root priviledges on it and installing QT there is quite out of question. It, however, has a Sun Virtual Box, and in principle creating desired environment on virtual machine is possible. However (i blame poor hardware there) when i tried to do that, i was stopped in my tracks on the step of copying QT installation file in the virtual machine's desctop by file system error.
Another thing is, there is no QT there but sqlite is installed.
How can i demonstrate the work of my application on the system i described? How can i create asingle-executable distribtion of my application?
UPDATE
Another problem arose on 'clen' Ubuntu 11.04 (without any updates, qt or sqlite). After attempting to launch the application, i get message:
error while loading shared libraries: libQtSql.so.4: cannot open shared object file: No such file or directory
That raises another question for me: how can i make this library embedded in my application to eliminate the need for .so file?
You need to deploy the sqlite plugin as well : it's in plugins/sqlrivers in your sdk
Most probably, you'll want to have a look to this page, about building installers (check generic section)
If I remember correctly, deploying this file in a subfolder named correctly is enough.
EDIT:
You can have a look at Qt official doc to have a clear view on how plugin are searched at runtime.
Basically, you might have to call QCoreApplication::addLibraryPath()
with your binary path and deploy your plugin in a subfolder named sqldrivers
. Putting simply the folder in the current path won't be enough.