УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

Statically linked against QT4?


Автор Повідомлення
Повідомлення створено: 22. 06. 2011 [18:33]
Unaie
Unai Ezta
Автор теми
Зареєстрован(а) с: 30.06.2009
Повідомлення: 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
Повідомлення створено: 22. 06. 2011 [22:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"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.
Повідомлення створено: 23. 06. 2011 [09:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"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.
Повідомлення створено: 23. 06. 2011 [13:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"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.
Повідомлення створено: 24. 06. 2011 [13:29]
Unaie
Unai Ezta
Автор теми
Зареєстрован(а) с: 30.06.2009
Повідомлення: 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)








[Повідомлення редагувалось 2 раз(ів), останній раз 24.06.2011 в 13:42.]
Повідомлення створено: 24. 06. 2011 [15:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"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.



6850