Я установил gcc49 на FreeBSD10.1. Я пытаюсь использовать его для разработки на C++ 11. Тем не менее, каждый раз, когда я компиляции некоторые C++ 11 правильный код (да я использую -std=c++11
), который использует специальные математические функции, он выплевывает ошибки, такие какg ++ include paths on freebsd
error: std::round is not a member of std
/usr/include/math.h
К примеру, здесь:
#include <cmath>
#include <iostream>
int main()
{
std::cout << std::round(10.1) << std::endl;
}
Так что, кажется, он пытается использовать старые включаемые файлы, которые пришли с FreeBSD, а не те, соответствующие новым gcc
от /usr/local/lib/gcc49/include
Я попытался установить CPLUS_INCLUDE_PATH
к /usr/local/lib/gcc49/include
с не повезло, система по-прежнему пытается найти /usr/include
.
я увидел, что это может быть ошибка в FreeBSD г ++, Getting GCC in C++11 mode to work on FreeBSD Однако даже при использовании -D_GLIBCXX_USE_C99
как предложено в https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194929 не решает проблему для математических функций.
Самая странная вещь, что я могу компилировать любые другие C++ 11 функций не из<cmath>
, как std::stol
, но должны использовать -D_GLIBCXX_USE_C99
флаг, как указано в сообщении об ошибке выше.
Любая идея, как сделать g ++ полностью функциональной с C++ 11 на FreeBSD 10.1?
Вы запрашиваете C++ 11? – Deduplicator
@Deduplicator да, мне нужна поддержка C++ 11 – vsoftco
@mvw, я пробовал эту же проблему, похоже, не смог распознать математическую часть стандартной библиотеки C++ 11 – vsoftco