OpenSCADA под Windows (XP/7/8, CE6, EC7)
Автор |
Повідомлення |
Повідомлення створено: 28. 10. 2015 [08:18]
|
ViacheslavMezentsev
Вячеслав Мезенцев
Автор теми
Зареєстрован(а) с: 20.10.2015
Повідомлення: 10
|
Дошёл кое-как до компиляции.
#if !__GLIBC_PREREQ(2,4) - закомментировал весь блок.
#include <ieee754.h> - нашёл на просторах сети, скопировал в /src.
Далее не знаю как поступить. Мне теперь каждый файл из сети вытягивать или я что-то недоустановил в пакетном менеджере? Судя по всему заголовочников мне не хватает.
$ make
Making all in src
make[1]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
C:/avr-gcc/utils/bin/make all-recursive
make[2]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
Making all in moduls/bd/SQLite
make[3]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite'
C:/cygwin64/bin/sh.exe ../../../../libtool --tag=CXX --tag=disable-shared --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c -o bd_SQLite_la-bd_sqlite.lo `test -f 'bd_sqlite.cpp' || echo './'`bd_sqlite.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c bd_sqlite.cpp -o bd_SQLite_la-bd_sqlite.o
mv -f .deps/bd_SQLite_la-bd_sqlite.Tpo .deps/bd_SQLite_la-bd_sqlite.Plo
C:/cygwin64/bin/sh.exe ../../../../libtool --tag=CXX --tag=disable-shared --mode=link g++ -DMOD_INCL -fpic -g -O2 -module -lsqlite3 -o bd_SQLite.la bd_SQLite_la-bd_sqlite.lo
libtool: link: rm -fr .libs/bd_SQLite.a .libs/bd_SQLite.la
libtool: link: ar cru .libs/bd_SQLite.a bd_SQLite_la-bd_sqlite.o
libtool: link: ranlib .libs/bd_SQLite.a
libtool: link: ( cd ".libs" && rm -f "bd_SQLite.la" && ln -s "../bd_SQLite.la" "bd_SQLite.la" )
make[3]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite'
Making all in .
make[3]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
C:/cygwin64/bin/sh.exe ../libtool --tag=CXX --tag=disable-shared --mode=compile g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c -o liboscada_la-tsys.lo `test -f 'tsys.cpp' || echo './'`tsys.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c tsys.cpp -o liboscada_la-tsys.o
tsys.cpp:24:21: фатальная ошибка: syscall.h: No such file or directory
#include <syscall.h>
^
компиляция прервана.
make[3]: *** [liboscada_la-tsys.lo] Error 1
make[3]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make: *** [all-recursive] Error 1
П.С. make утилита используется из набора avr-gcc, видимо пути нужно поправить.
[Повідомлення редагувалось 2 раз(ів), останній раз 28.10.2015 в 08:23.]
Вкладений файл
|
Повідомлення створено: 28. 10. 2015 [10:52]
|
ViacheslavMezentsev
Вячеслав Мезенцев
Автор теми
Зареєстрован(а) с: 20.10.2015
Повідомлення: 10
|
2) pthread_rwlock_timedwrlock (либо пробовать другую библиотеку, например от mingw, либо искать замену функции)
Дошёл до этого места. А что нужно сделать, чтобы pthread_rwlock_timedwrlock() можно было из mingw взять, а не комментировать? Сомневаюсь, что такое место можно просто убрать.
$ make
Making all in src
make[1]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
make all-recursive
make[2]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
Making all in moduls/bd/SQLite
make[3]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite»
/bin/sh ../../../../libtool --tag=CXX --tag=disable-shared --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c -o bd_SQLite_la-bd_sqlite.lo `test -f 'bd_sqlite.cpp' || echo './'`bd_sqlite.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c bd_sqlite.cpp -o bd_SQLite_la-bd_sqlite.o
mv -f .deps/bd_SQLite_la-bd_sqlite.Tpo .deps/bd_SQLite_la-bd_sqlite.Plo
/bin/sh ../../../../libtool --tag=CXX --tag=disable-shared --mode=link g++ -DMOD_INCL -fpic -g -O2 -module -lsqlite3 -o bd_SQLite.la bd_SQLite_la-bd_sqlite.lo
libtool: link: rm -fr .libs/bd_SQLite.a .libs/bd_SQLite.la
libtool: link: ar cru .libs/bd_SQLite.a bd_SQLite_la-bd_sqlite.o
libtool: link: ranlib .libs/bd_SQLite.a
libtool: link: ( cd ".libs" && rm -f "bd_SQLite.la" && ln -s "../bd_SQLite.la" "bd_SQLite.la" )
make[3]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite»
Making all in .
make[3]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
/bin/sh ../libtool --tag=CXX --tag=disable-shared --mode=compile g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c -o liboscada_la-tsys.lo `test -f 'tsys.cpp' || echo './'`tsys.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c tsys.cpp -o liboscada_la-tsys.o
mv -f .deps/liboscada_la-tsys.Tpo .deps/liboscada_la-tsys.Plo
/bin/sh ../libtool --tag=CXX --tag=disable-shared --mode=compile g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-resalloc.lo -MD -MP -MF .deps/liboscada_la-resalloc.Tpo -c -o liboscada_la-resalloc.lo `test -f 'resalloc.cpp' || echo './'`resalloc.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-resalloc.lo -MD -MP -MF .deps/liboscada_la-resalloc.Tpo -c resalloc.cpp -o liboscada_la-resalloc.o
resalloc.cpp: В функции-члене «void OSCADA::Res::resRequestW(short unsigned int)»:
resalloc.cpp:59:44: ошибка: нет декларации «pthread_rwlock_timedwrlock» в этой области видимости
rez = pthread_rwlock_timedwrlock(&rwc,&wtm);
^
resalloc.cpp: В функции-члене «void OSCADA::Res::resRequestR(short unsigned int)»:
resalloc.cpp:90:44: ошибка: нет декларации «pthread_rwlock_timedrdlock» в этой области видимости
rez = pthread_rwlock_timedrdlock(&rwc,&wtm);
^
Makefile:620: ошибка выполнения рецепта для цели «liboscada_la-resalloc.lo»
make[3]: *** [liboscada_la-resalloc.lo] Ошибка 1
make[3]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:835: ошибка выполнения рецепта для цели «all-recursive»
make[2]: *** [all-recursive] Ошибка 1
make[2]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:468: ошибка выполнения рецепта для цели «all»
make[1]: *** [all] Ошибка 2
make[1]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:726: ошибка выполнения рецепта для цели «all-recursive»
make: *** [all-recursive] Ошибка 1
|
Повідомлення створено: 02. 11. 2015 [22:04]
|
fido_max
Maxim Kochetkov
Contributor
Зареєстрован(а) с: 28.10.2010
Повідомлення: 129
|
"ViacheslavMezentsev" wrote:
2) pthread_rwlock_timedwrlock (либо пробовать другую библиотеку, например от mingw, либо искать замену функции)
Дошёл до этого места. А что нужно сделать, чтобы pthread_rwlock_timedwrlock() можно было из mingw взять, а не комментировать? Сомневаюсь, что такое место можно просто убрать.
Удалил только лишь для того, чтобы скомпилировалось, а не для того чтобы работало. Иначе как можно адаптировать код, который не компилируется даже?
Я не знаю, что нужно сделать. Возможно стоит попробовать mingw в качестве компилятора (удалить gcc и поставить другой) с его библиотеками, т.к. в его либах упоминание такой функции я видел.
Тут посерьезней проблема есть: модули не подгружаются.
|
Повідомлення створено: 03. 11. 2015 [06:36]
|
ViacheslavMezentsev
Вячеслав Мезенцев
Автор теми
Зареєстрован(а) с: 20.10.2015
Повідомлення: 10
|
Я, пожалуй, пойду другим путём. Порежу исходники на части, выкину всё лишнее и POSIX этот тоже. Мне не нужны зависимости от кучи стороннего непонятно как и кем поддерживаемого ПО. Возможно, сделаю обёртки, чтобы переносимость была более реальной, чем я вижу её сейчас. Всё равно, если я хочу запустить OpenSCADA на панелях оператора с WinCE и выше, мне нужны исходники, полностью компилируемые в MSVC. Кроме того, архитектура с использованием БД не подходит, т.к. работа с базой (как мне думается) убьёт флешку. На всех таких малых ПК вроде ПЛК или панелей оператора используется (micro)SD-карта в качестве расширения для диска. Если СУБД интенсивно работает с диском, то флешка - не лучшее место для хранения базы.
Ах да, QT я пожалуй тоже выкину. У меня на панели доступен .Net 3.5 в коробке (WinEC7), с ним я гораздо более знаком. Я попробовал сборку и отладку приложений на С++ в чистом Win32API и C# в .Net 3.5 - всё практически как на настольном ПК. Ядро системы можно оставить на C++, а вот интерфейс весь будет у меня в .Net. Жаль только, что мне не удалось использовать C++/CLI, всё бы значительно упростилось. Теперь придётся придумывать как попроще реализовать обмен между управляемым и неуправляемым кодом.
|
Повідомлення створено: 03. 11. 2015 [07:57]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
Пока перенёс в раздел "Разное", если просветления не наступит то просто удалю!
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 04. 04. 2017 [10:42]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
На данный момент активно осуществляется адаптация к Android, что за собой тянет унификацию сборочной системы, на предмет зависимостей OpenSCADA и сборки со статическими библиотеками.
Если участникам данной темы форума серьёзно интересна задача адаптации к работе на OС "MS Windows", то Вы можете создать отдельную страницу адаптации где отслеживать и решать возникающие проблемы; по ходу с решением проблем адаптации на Android, которые могут быть общими!
Со своей стороны могу изучать проблемы, которые можно быстро воспроизвести по проторенной дороге, зафиксированной на отдельной странице адаптации.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 04. 04. 2017 [10:58]
|
ViacheslavMezentsev
Вячеслав Мезенцев
Автор теми
Зареєстрован(а) с: 20.10.2015
Повідомлення: 10
|
В общем, я написал собственное приложение на основе .Net Compact, которое работает и под WinCE, и под настольные Windows. Заточено под работу с сенсорным экраном. Драйвера устройств и компоненты подключаются как внешние .Net сборки. Визуализация расширяемая. В планах поддержка скриптов на c# и vb.net (компилируемых и для .Net Compact в том числе). Такие скрипты являются объектно ориентированными и им доступны все возможности .Net. Что касается кросс-платформенности, жду .Net Core для arm'ов.
Это оказалось проще, чем разбираться с вашей системой. Подумайте об этом.
[Повідомлення редагувалось 1 раз(ів), останній раз 04.04.2017 в 10:59.]
Вкладений файл
|
Повідомлення створено: 04. 04. 2017 [11:54]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"ViacheslavMezentsev" wrote:
Это оказалось проще, чем разбираться с вашей системой. Подумайте об этом.
Ждите, по ходу думайте про кросплатформенность и то, что до .Net уже были такие потенциальные кросплатформенные окружения, как Java, чистый Qt как фреймворк, Python и ряд других, про которые я очевидно знаю! :)
Кстати, Вы вообще сильно адресом ошиблись и Вам на http://openscada.org где ровно такое с 2004 года делают.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 14. 04. 2017 [10:51]
|
3dlogin
Илья Кузнецов
Зареєстрован(а) с: 06.04.2016
Повідомлення: 12
|
Роман, добрый день! Не то чтобы я лично заинтересован в портировании OpenSCADA под Windows,
скорее мне очень интересен вопрос реальной кроссплатформенности OpenSCADA. Много думал над тем,
как лучше всего это реализовать, и пришёл к выводу, что все специфичные места стоит переписать с использованием Qt.
Согласитесь, Qt уже давно вырос из "потенциально кроссплатформенного фреймворка".
На всякий случай сразу оговорюсь, что всё написанное - сугубо моё мнение, я не призываю и не агитирую.
Но очень интересно Ваше мнение: как считаете, стоит ли игра свеч, сможем ли мы получить действительно кроссплатформенный продукт
из OpenSCADA применив Qt в тех местах её архитектуры, где (в альтернативном варианте) необходимо было бы писать #ifdef _WIN32 #elif __linux
qmake, кстати, мог бы вполне органично заменить autotools, тоже уже дорос, я считаю.
Если вдруг Вы разделяете мою позицию, могу оказать вполне реальную помощь в разработке (переводе частей OpenSCADA под Qt).
|
Повідомлення створено: 14. 04. 2017 [10:58]
|
3dlogin
Илья Кузнецов
Зареєстрован(а) с: 06.04.2016
Повідомлення: 12
|
P.S.> Прекрасно понимаю, что объём работ получится немаленький, но считаю, что оно стоит того. А уж если основной разработчик поддержит, то и подавно.
|
|
|