EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

Statically linked against QT4?


Author Message
Written on: 22. 06. 2011 [18:33]
Unaie
Unai Ezta
Topic creator
registered since: 30.06.2009
Posts: 42
I want to built openscada without QT4 dependencies.
I have QT4 statically built, but I don't know how to ./configure Openscada or set environment variables in order to built it statically linked to QT4.

I have errors like:

-lQtGui not found ...


Regards
Written on: 22. 06. 2011 [22:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"Unaie" wrote:

I want to built openscada without QT4 dependencies.

And with QT4 modules?

"Unaie" wrote:

I have QT4 statically built, but I don't know how to ./configure Openscada or set environment variables in order to built it statically linked to QT4.

./configure do not support that. And static linking for like big library QT4 demand for manual set all libraries used by it to dynamic link or also static (recursive), and that hard to check.


libpthread.so.0 => /lib/libpthread.so.0 (0xb6b6d000)
libz.so.1 => /lib/libz.so.1 (0xb6b57000)
libdl.so.2 => /lib/libdl.so.2 (0xb6b52000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6b4d000)
librt.so.1 => /lib/librt.so.1 (0xb6b44000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb6a8f000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb6a3f000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb69b8000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb697c000)
libSM.so.6 => /usr/lib/libSM.so.6 (0xb6972000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb695a000)
libXi.so.6 => /usr/lib/libXi.so.6 (0xb6950000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb6946000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb693e000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6938000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb692d000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb6929000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb68f9000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb68e9000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb67cc000)
libpcre.so.3 => /lib/libpcre.so.3 (0xb679b000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb6796000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb676e000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6754000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb6750000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb6749000)


For simple you can replace into Makefile.am of QT-based modules:
From: ui_QTCfg_la_LIBADD = -L$(QT4_LIB) -lQtCore -lQtGui
To: ui_QTCfg_la_LIBADD = $(QT4_LIB)/libQtCore.la $(QT4_LIB)/libQtGui.la

But that do not work by first reason.

Learn, learn and learn better than work, work and work.
Written on: 23. 06. 2011 [09:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"roman" wrote:

"Unaie" wrote:

I have QT4 statically built, but I don't know how to ./configure Openscada or set environment variables in order to built it statically linked to QT4.

./configure do not support that. And static linking for like big library QT4 demand for manual set all libraries used by it to dynamic link or also static (recursive), and that hard to check.

I am wrong.
Actually almost all static building work in auto.
After install static libraries of QT4 all OpenSCADA QT-modules start build static, but without QT4 demand libraries.
For that need use "pkg-config --libs --static QtGui" into configure.in.

Learn, learn and learn better than work, work and work.
Written on: 23. 06. 2011 [13:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"roman" wrote:

Actually almost all static building work in auto.

But only in case files *.la with *.a allow.

Learn, learn and learn better than work, work and work.
Written on: 24. 06. 2011 [13:29]
Unaie
Unai Ezta
Topic creator
registered since: 30.06.2009
Posts: 42
Thank you. I've sucesfully built it statically linked to QT4.
But there is an error starting openscada:


1|/WorkStation/sub_Archive/ | Start subsystem.
1|/WorkStation/sub_UI/mod_VCAEngine/ | Start module.
QWidget: Must construct a QApplication before a QPaintDevice
7|/WorkStation/ | OpenSCADA is aborted!
Aborted


I've looking for information about this error and it appears to be a static vs dynamic libraries problem but I cannot find solution.

I was using oscada 0.6.4 old SVN (my tested and release version) with QT 4.6.2 without problems, but now my development system carries QT 4.7, and oscada 0.6.4 compiles sucesfully but I get a "segmentation fault" after start QTSTarter module. So I was trying to build oscada statically linked to QT 4.6.2 to run in my development system (Ubuntu 10.10). (Oscada 0.7.1, however, runs sucesfully with QT 4.7, I don't know why 4.6.2 doesn't)








[This article was edited 2 times, at last 24.06.2011 at 13:42.]
Written on: 24. 06. 2011 [15:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"Unaie" wrote:

I've looking for information about this error and it appears to be a static vs dynamic libraries problem but I cannot find solution.

Use dynamic link.

"Unaie" wrote:

I was using oscada 0.6.4 old SVN (my tested and release version) with QT 4.6.2 without problems, but now my development system carries QT 4.7, and oscada 0.6.4 compiles sucesfully but I get a "segmentation fault" after start QTSTarter module.

OpenSCADA 0.6.4 is not supported already.

Learn, learn and learn better than work, work and work.



1070