Українська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
Сообщения: 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.
Сообщение создано: 23. 06. 2011 [09:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 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.
Сообщение создано: 23. 06. 2011 [13:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 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.
Сообщение создано: 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
Сообщения: 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.



2603