Problem linking with shared lib in Harmattan
-
Hi all,
I am trying a simple project which links to a shared lib like
LIBS += -L$$OUT_PWD/../mylib/ -lmylibI can see that my lib is being generated and added it to the project via Qt Creator'ss Add Library wizard (by right clicking on project).
However when deploying to N9 via Qt Creator I am struck with the following error.@dpkg-shlibdeps: failure: couldn't find library libmylib.so.1 needed by debian/bigtest/opt/hell/bin/hell (its RPATH is '').
Note: libraries are not searched in other binary packages that do not have any shlibs or symbols file.
To help dpkg-shlibdeps find private libraries, you might need to set LD_LIBRARY_PATH.
dh_shlibdeps: command returned error code 512
make: *** [binary-arch] Error 1
dpkg-buildpackage: failure: debian/rules binary gave error exit status 2
Packaging Error: Command '/home/srikanth/QtSDK/Madde/bin/mad dpkg-buildpackage -nc -uc -us' failed.Exit code: 2
Error while building project bigtest (target: Harmattan)
When executing build step 'Create Debian Package'
@
I have seen a "bug":https://bugreports.qt.nokia.com/browse/QTSDK-71 raised but no solid solution there.
Linking to a custom lib is a very basic app requirement. This surprises me why Harmattan did not receive this love.
Any solution/workaround is much appreciated.Thanks in adavance,
Srikanth -
-
I looked around and found some information on Nokias developer wiki:
http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_deploy_and_link_a_shared_library_on_Harmattanwhich contained most of what I needed.
My solution (for the library specific parts) looks like this:
@
INCLUDEPATH += $$PWD/hupnp/includeSection to install libHUpnp
contains(MEEGO_EDITION,harmattan):CONFIG(debug, debug|release): hupnp.files += $$PWD/hupnp/lib/harmattan/debug/libHUpnp.so.1
contains(MEEGO_EDITION,harmattan):CONFIG(release, debug|release): hupnp.files += $$PWD/hupnp/lib/harmattan/release/libHUpnp.so.1
contains(MEEGO_EDITION,harmattan):CONFIG(debug, debug|release): hupnp.files += $$PWD/hupnp/lib/harmattan/debug/libQtSolutions_SOAP-2.7.so.1
contains(MEEGO_EDITION,harmattan):CONFIG(release, debug|release): hupnp.files += $$PWD/hupnp/lib/harmattan/release/libQtSolutions_SOAP-2.7.so.1
contains(MEEGO_EDITION,harmattan):hupnp.path = /opt/LinnKontrol/hupnp/lib
contains(MEEGO_EDITION,harmattan):INSTALLS += hupnpwin32:CONFIG(release, debug|release): LIBS += -L$$PWD/hupnp/lib/release -lHUpnp -lQtSolutions_SOAP-2.7
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/hupnp/lib/debug -lHUpnp -lQtSolutions_SOAP-2.7
else:unix:!contains(MEEGO_EDITION,harmattan):CONFIG(release, debug|release): LIBS += -L$$PWD/hupnp/lib/unix/release -lHUpnp -lQtSolutions_SOAP-2.7
else:unix:!contains(MEEGO_EDITION,harmattan):CONFIG(debug, debug|release): LIBS += -L$$PWD/hupnp/lib/unix/debug -lHUpnp -lQtSolutions_SOAP-2.7
else:contains(MEEGO_EDITION,harmattan):CONFIG(release, debug|release): LIBS += -L$$PWD/hupnp/lib/harmattan/release -lHUpnp -lQtSolutions_SOAP-2.7
else:contains(MEEGO_EDITION,harmattan):CONFIG(debug, debug|release): LIBS += -L$$PWD/hupnp/lib/harmattan/debug -lHUpnp -lQtSolutions_SOAP-2.7
#else:symbian: LIBS += -lHUpnp -lQtSolutions_SOAP-2.7contains(MEEGO_EDITION,harmattan):CONFIG(debug, debug|release): DEPENDPATH += -L$$PWD/hupnp/harmattan/lib/debug
contains(MEEGO_EDITION,harmattan):CONFIG(release, debug|release): DEPENDPATH += -L$$PWD/hupnp/harmattan/lib/releasecontains(MEEGO_EDITION,harmattan):QMAKE_LFLAGS += -Wl,--rpath=/opt/LinnKontrol/hupnp/lib
else:unix:!contains(MEEGO_EDITION,harmattan):QMAKE_LFLAGS += -Wl,--rpath=./hupnp/lib
@What this does (I think) is essentially to say that I'm linking to the library, where the files of the library reside on my disk, where it should install the library on the phone and where to find it on the phone (where to find the dependency).
I'm not sure everything is needed, but at least it works for my N9.So my library is called hupnp, and I'm installing it within my programs (LinnKontrol) directory on the phone, since that's what Nokia recommends in their guide.
Hope it helps!