[BugWrong]
Ошибка компиляции с -std=c++11
Автор |
Повідомлення |
Повідомлення створено: 17. 11. 2017 [14:12]
|
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
|
Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:
./configure --prefix=$HOME/apps/openscada09qt56 --with-qt5=yes PKG_CONFIG_PATH=$HOME/apps/Qt/5.6/gcc_64/lib/pkgconfig Qt5Widgets_CFLAGS='-std=c++11'
Что в свою очередь при сборке компилятором gcc версии 5.4 приводит к следующей ошибке компиляции:
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src -std=c++11 -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtPrintSupport -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtWidgets -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtGui -I/home/aleax/apps/Qt/5.6/gcc_64/include -I/home/aleax/apps/Qt/5.6/gcc_64/include/QtCore -I/home/aleax/apps/Qt/5.6/gcc_64/include -g -O2 -MT ui_Vision_la-vis_shapes.lo -MD -MP -MF .deps/ui_Vision_la-vis_shapes.Tpo -c vis_shapes.cpp -fPIC -DPIC -o .libs/ui_Vision_la-vis_shapes.o
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::makeTrendsPicture(VISION::WdgView*)’:
vis_shapes.cpp:3283:17: error: ‘isnan’ was not declared in this scope
if(isnan(curVl)) curVl = EVAL_REAL;
^
vis_shapes.cpp:3283:17: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:641:5: note: ‘std::isnan’
isnan(_Tp __x)
^
vis_shapes.cpp: In member function ‘void VISION::ShapeDiagram::TrendObj::loadTrendsData(bool)’:
vis_shapes.cpp:3685:127: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3685:127: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
vis_shapes.cpp:3784:88: error: ‘isinf’ was not declared in this scope
vis_shapes.cpp:3784:88: note: suggested alternative:
In file included from /usr/include/c++/5/random:38:0,
from /usr/include/c++/5/bits/stl_algo.h:66,
from /usr/include/c++/5/algorithm:62,
from vis_shapes.cpp:27:
/usr/include/c++/5/cmath:621:5: note: ‘std::isinf’
isinf(_Tp __x)
^
Makefile:606: спроба виконання рецепта для мети «ui_Vision_la-vis_shapes.lo» зазнала невдачі
make: *** [ui_Vision_la-vis_shapes.lo] Помилка 1
решается указанием неймспейса std:
diff --git a/src/moduls/ui/Vision/vis_shapes.cpp b/src/moduls/ui/Vision/vis_shapes.cpp
index 0748c4d..585c066 100644
--- a/src/moduls/ui/Vision/vis_shapes.cpp
+++ b/src/moduls/ui/Vision/vis_shapes.cpp
@@ -3280,7 +3280,7 @@ void ShapeDiagram::makeTrendsPicture( WdgView *w )
curTm = vmin(aVend,vmax(aVbeg,cP.val()[a_pos].tm));
curVl = cP.val()[a_pos].val;
if(vsPercT && curVl != EVAL_REAL) curVl = 100*(curVl-bordL)/(bordU-bordL);
- if(isnan(curVl)) curVl = EVAL_REAL;
+ if(std::isnan(curVl)) curVl = EVAL_REAL;
curPos = tAr.x()+tAr.width()*(curTm-tBeg)/(tPict-tBeg);
} else curPos = 0;
if(!curPos || cP.val()[a_pos].tm >= aVend) end_vl = true;
@@ -3682,7 +3682,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
valEnd_ = (valEnd()/wantPer)*wantPer;
if(lstTm && lstTm >= valEnd_) {
double curVal = (req.text() == EVAL_STR) ? EVAL_REAL : s2r(req.text());
- if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+ if((val_tp == TFld::Boolean && curVal == EVAL_BOOL) || (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
curVal = EVAL_REAL;
if(valEnd_ && (lstTm-valEnd_)/vmax(wantPer,trcPer) > 2) vals.push_back(SHg(lstTm-trcPer,EVAL_REAL));
else if((lstTm-valEnd_) >= wantPer) vals.push_back(SHg(lstTm,curVal));
@@ -3781,7 +3781,7 @@ void ShapeDiagram::TrendObj::loadTrendsData( bool full )
curPos = s2i(TSYS::strParse(svl,0," ",&var_off,true));
curVal = s2r((curValS=TSYS::strParse(svl,0," ",&var_off,true)));
if(curValS == EVAL_STR || (val_tp == TFld::Boolean && curVal == EVAL_BOOL) ||
- (val_tp == TFld::Integer && curVal == EVAL_INT) || isinf(curVal))
+ (val_tp == TFld::Integer && curVal == EVAL_INT) || std::isinf(curVal))
curVal = EVAL_REAL;
}
else curPos = maxPos+1;
P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.
|
Повідомлення створено: 17. 11. 2017 [14:54]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"aleax" wrote:
Если собирать с Qt5 (пробовал обе LTS версии 5.6 и 5.9.1) требуется указывать флаг -std=c++11:
Да, требуется, только нужно их собирать компилятором у которого это уже по умолчанию или достаточно прямо и где ничего подобного нет!
Смотрим сборку для Android: http://oscada.org/wiki/Sub-projects/Adaption_to_Android
Т.е. здесь нет ошибок OpenSCADA!
"aleax" wrote:
P.S.: Обнаружил что в одном из рабочих проектов, в интерфейсе Vision, при переходе с главного кадра на другую страницу происходит падение скады. Сборка с Qt5.9.1 падает, а с Qt5.6 нет. Буду дальше искать в чем дело.
На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 17. 11. 2017 [15:58]
|
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
|
ОК, буду дальше изучать вопрос.
Посмотрел в документации http://oscada.org/wiki/Sub-projects/Adaption_to_Android, там явно указывается флаг c++11 при подготовке сборочной среды:
export CXXFLAGS="$CFLAGS -std=c++11 -I$NDK_PATH/sources/cxx-stl/gnu-libstdc++/$TARGET_V/include\
"roman" wrote:
На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !
Собираю и тестирую под десктоп линукс. Пока изучаю coredump.
|
Повідомлення створено: 18. 11. 2017 [00:14]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
Да, и компиляторы там "прямы" и не теряют стандартных математических функций C.
"aleax" wrote:
"roman" wrote:
На Android у меня ничего не падает, кроме того при сборке с последними Qt5 крайне желательно использовать параметр конфигурации сборки --enable-QtMainThrd !
Собираю и тестирую под десктоп линукс. Пока изучаю coredump.
Не падало. Собственно там есть проблема с видом "Текст" примитива элементов формы на отдельном окне, что приводит к падению, но везде и независимо от Qt.
Это исправил.
В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 20. 11. 2017 [09:43]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"roman" wrote:
В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.
Переключил, теперь все сборки для Debian9 используют Qt5!
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 23. 11. 2017 [08:06]
|
Megavoltik
Игорь Гапша
Зареєстрован(а) с: 20.11.2017
Повідомлення: 4
|
"roman" wrote:
"roman" wrote:
В остальном, на Debian 9, GCC 6.3, Qt5.7.1, GLibC 2.24 проблем нет и я думаю, что переключу сборки для него на Qt5, поскольку стиль Qt5 там уже приемлем и будет вариант поглядеть на Qt5 на живом диске.
Переключил, теперь все сборки для Debian9 используют Qt5!
Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.
Да, Debian 9.1.
[Повідомлення редагувалось 2 раз(ів), останній раз 23.11.2017 в 08:13.]
|
Повідомлення створено: 23. 11. 2017 [08:42]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Megavoltik" wrote:
"roman" wrote:
Переключил, теперь все сборки для Debian9 используют Qt5!
Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.
Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.
Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 23. 11. 2017 [08:56]
|
Megavoltik
Игорь Гапша
Зареєстрован(а) с: 20.11.2017
Повідомлення: 4
|
"roman" wrote:
"Megavoltik" wrote:
"roman" wrote:
Переключил, теперь все сборки для Debian9 используют Qt5!
Добрый день. Подниму тему. Есть проблема на Debian 9, GCC 6.3.0, Qt 5.7.1. В Рабочем пользовательском интерфейсе при попытке редактирования атрибутов элемента к примеру "Геометрия" курсор убегает вверх и отредактировать их невозможно. На Qt 4 и r2516-1 таких проблем не было. Появились только после моего обновления вчера на r2522-2. Причем на двух машинах сразу. С чем это может быть связано и как исправить?.
Да, есть такое, в смысле невозможности даже выбрать элемент в дереве глубиной более первого уровня.
Только это не проблема OpenSCADA поскольку она никак выбором элементов не управляет, а только принимает сигналы по выбору.
Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.
Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо
Может тогда вернуть пока на Qt4?
[Повідомлення редагувалось 1 раз(ів), останній раз 23.11.2017 в 09:00.]
|
Повідомлення створено: 24. 11. 2017 [10:16]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"Megavoltik" wrote:
"roman" wrote:
Кроме того на Qt5.3 такого не замечалось, сегодня ещё погляжу на 5.9, на Android.
Точнее там у меня сейчас 5.8 и на нём эта проблема есть.
"Megavoltik" wrote:
Даже больше скажу: на Qt 5.5.1 такого на замечалось. Спасибо
Может тогда вернуть пока на Qt4?
Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 24. 11. 2017 [13:07]
|
Megavoltik
Игорь Гапша
Зареєстрован(а) с: 20.11.2017
Повідомлення: 4
|
"roman" wrote:
Точнее там у меня сейчас 5.8 и на нём эта проблема есть.
На Qt 5.9.3 та же беда. Сегодня попробовал. Короче все что выше 5.3 - неработоспособно. Может тогда в зависимостях не >=5.7.0, а >=5.3 поставить? Хоть дописать смогу тест...
"roman" wrote:
Пусть побудет, я в ближайшее время добавлю менеджер проектов прямо в UI.QTStarter, после чего ближе рассмотрю эту проблему и другие с Qt на Android.
ОК
[Повідомлення редагувалось 1 раз(ів), останній раз 24.11.2017 в 13:08.]
|
|
|