Название: GCC 4.8.4 c++11 Отправлено: andrew.k от Июнь 20, 2016, 17:39 В определенный момент проект перестал собираться.
Оказалось, что gcc при включенном -std=c++11 стал определять макрос __STRICT_ANSI__ Из-за чего не все типы определялись. В данный момент есть две одинаковых системы Ubuntu 14.04 LTS и одинаковые gcc 4.8.4 На одной проект компилится, на другой нет, по описанной выше причине. Хотя раньше он успешно собирался на обоих машинах. Решение проблемы это добавление флага -U__STRICT_ANSI__ Но хотелось бы понять в научных целях, как такое может быть? И где это может настраиваться? Название: Re: GCC 4.8.4 c++11 Отправлено: kai666_73 от Июнь 20, 2016, 18:40 Система сборки используется? какая?
Что-то мне нашептывает что это cmake, и на разных вениках разные версии оного ) Название: Re: GCC 4.8.4 c++11 Отправлено: andrew.k от Июнь 20, 2016, 20:58 Система сборки используется? какая? Система сборки не при чем.Что-то мне нашептывает что это cmake, и на разных вениках разные версии оного ) Проверял просто компиляцию самим g++ Вот такой командой. Код В одном случае в def.h #define __STRICT_ANSI__ 1 есть, а в другом нет. При чем это появляется только при использовании -std=c++11. Без него STRICT_ANSI нет. А так же если использовать -std=gnu++0x тоже нет. Название: Re: GCC 4.8.4 c++11 Отправлено: kai666_73 от Июнь 21, 2016, 00:37 Ну чудес не бывает - чем-то веники отличаются ))
Попробую еще раз пальцем в небо: версии g++/переменные окружения на обоих машинах совпадают? Название: Re: GCC 4.8.4 c++11 Отправлено: __Heaven__ от Июнь 21, 2016, 13:53 Я бы ещё сравнил файлы def.h. Кстати, чей он? gcc?
Название: Re: GCC 4.8.4 c++11 Отправлено: andrew.k от Июнь 21, 2016, 15:52 Я бы ещё сравнил файлы def.h. Пока нет доступа к второй машине, на которой все компилится. Позже выложу.Кстати, чей он? gcc? Не понял вопроса. Кто он? Кто чей?Название: Re: GCC 4.8.4 c++11 Отправлено: __Heaven__ от Июнь 21, 2016, 20:46 Какой пакет установил def.h?
Название: Re: GCC 4.8.4 c++11 Отправлено: __Heaven__ от Июнь 21, 2016, 20:48 У меня такого файла нет, версия 4.9.3. (gentoo)
Название: Re: GCC 4.8.4 c++11 Отправлено: Old от Июнь 21, 2016, 20:54 У меня такого файла нет, версия 4.9.3. (gentoo) -o fileзадает имя выходного файла. Название: Re: GCC 4.8.4 c++11 Отправлено: __Heaven__ от Июнь 21, 2016, 23:20 А, тьфу... Выше не прочитал
Название: Re: GCC 4.8.4 c++11 Отправлено: andrew.k от Июнь 23, 2016, 00:47 В общем всем спасибо за внимание)
Проблема оказалась не в __STRICT_ANSI__, хотя и __STRICT_ANSI__ решал проблему. Видно глаз замылился от работы в выходной) Проблема оказалось в том, что в инклудепасах случайно попал хедер от другой версии библиотеки (из-за многочисленных переустановок). И инклудился, не тот, который предполагался. А тот который инклудился, почему-то оказался с таким косяком, хотя по идее должен был тоже работать. Тему можно наверное удалить, т.к. пользы в ней нет) |