Russian Qt Forum
Май 06, 2024, 02:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: GCC 4.8.4 c++11  (Прочитано 8441 раз)
andrew.k
Гость
« : Июнь 20, 2016, 17:39 »

В определенный момент проект перестал собираться.
Оказалось, что gcc при включенном -std=c++11 стал определять макрос __STRICT_ANSI__
Из-за чего не все типы определялись.

В данный момент есть две одинаковых системы Ubuntu 14.04 LTS и одинаковые gcc 4.8.4
На одной проект компилится, на другой нет, по описанной выше причине. Хотя раньше он успешно собирался на обоих машинах.

Решение проблемы это добавление флага -U__STRICT_ANSI__

Но хотелось бы понять в научных целях, как такое может быть? И где это может настраиваться?
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #1 : Июнь 20, 2016, 18:40 »

Система сборки используется? какая?
Что-то мне нашептывает что это cmake, и на разных вениках разные версии оного )
Записан
andrew.k
Гость
« Ответ #2 : Июнь 20, 2016, 20:58 »

Система сборки используется? какая?
Что-то мне нашептывает что это cmake, и на разных вениках разные версии оного )
Система сборки не при чем.
Проверял просто компиляцию самим g++
Вот такой командой.
Код
Bash
g++ -dM -E -std=c++11 -o def.h main.cpp
 
В одном случае в def.h #define __STRICT_ANSI__ 1 есть, а в другом нет.
При чем это появляется только при использовании -std=c++11.
Без него STRICT_ANSI нет. А так же если использовать -std=gnu++0x тоже нет.
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #3 : Июнь 21, 2016, 00:37 »

Ну чудес не бывает - чем-то веники отличаются ))
Попробую еще раз пальцем в небо: версии g++/переменные окружения на обоих машинах совпадают?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Июнь 21, 2016, 13:53 »

Я бы ещё сравнил файлы def.h. Кстати, чей он? gcc?
Записан
andrew.k
Гость
« Ответ #5 : Июнь 21, 2016, 15:52 »

Я бы ещё сравнил файлы def.h.
Пока нет доступа к второй машине, на которой все компилится. Позже выложу.
Кстати, чей он? gcc?
Не понял вопроса. Кто он? Кто чей?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Июнь 21, 2016, 20:46 »

Какой пакет установил def.h?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Июнь 21, 2016, 20:48 »

У меня такого файла нет, версия 4.9.3. (gentoo)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #8 : Июнь 21, 2016, 20:54 »

У меня такого файла нет, версия 4.9.3. (gentoo)
-o file
задает имя выходного файла.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Июнь 21, 2016, 23:20 »

А, тьфу... Выше не прочитал
Записан
andrew.k
Гость
« Ответ #10 : Июнь 23, 2016, 00:47 »

В общем всем спасибо за внимание)
Проблема оказалась не в __STRICT_ANSI__, хотя и __STRICT_ANSI__ решал проблему.
Видно глаз замылился от работы в выходной)

Проблема оказалось в том, что в инклудепасах случайно попал хедер от другой версии библиотеки (из-за многочисленных переустановок).
И инклудился, не тот, который предполагался. А тот который инклудился, почему-то оказался с таким косяком, хотя по идее должен был тоже работать.

Тему можно наверное удалить, т.к. пользы в ней нет)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.065 секунд. Запросов: 23.