Когда необходимо использовать флаг -stdlib=libstdc++ в
для компилятора и линкера при компиляции с помощью GCC?
Делает компилятор автоматически использовать с libstdc++?
Я использую версии gcc4.8.2 на Ubuntu 13.10 и я хотел бы использовать стандарт C++11. Я уже пропуск-с std=с++11` для компилятора.
На Linux: В общем, все обычно доступны дистрибутивы Linux будут использовать libstdc++ по умолчанию, и все современные версии GCC располагают с libstdc++, который поддерживает C++11. Если вы хотите компилировать код C++11 здесь, используйте одно из следующих значений:
На ОС Х Маверикс до: г++
был фактически псевдоним для лязг++ и Яблоко'ы старая версия libstdc++ был по умолчанию. Вы могли бы использовать библиотеку libc++ (который включал поддержкой C++11 библиотека), передавая
-stdlib=библиотеки libc++`. Если вы хотите компилировать код C++11 здесь, используйте одно из следующих значений:
с Clang++ -с std=с++11 -stdlib=библиотеки libc++ ввод.схх-о себе.из
лязг++ -с std=с GNU++11 -stdlib=библиотеки libc++ ввод.схх-о себе.из
На ОС Х с Маверикс: библиотеки libc++ по умолчанию. Вы можете использовать Apple'ы старая версия libstdc++ (который не входит поддержка C++11 библиотека) с передачей -stdlib=libstdc++в
с Clang++ -с std=с++11 ввода.схх-о себе.из
лязг++ -с std=с GNU++11 ввода.схх-о себе.из
когда необходимо использовать флаг
-stdlib=libstdc++ в
для компилятора и линкера при компиляции с помощью GCC?
Короткий ответ: никогда
Более длинный ответ: -stdlib
флаг Clang и не будет работать с любой версией GCC когда-либо выпущенных. На Mac ОС Х иногда ССЗ
и G++
команды на самом деле являются псевдонимами лязг не НКУ, и версия libstdc++, что Apple кораблей древние (около 2008) поэтому, конечно, это не'т поддержка C++11. Это означает, что на OS X при использовании лязг-делая вид, чтобы быть GCC, вы можете использовать -stdlib=библиотеки libc++
, чтобы выбрать лязгом's новый с++11-совместимый библиотеки, или вы можете использовать -stdlib=libstdc++ в к Выберите до C++11 античная версия libstdc++, которая принадлежит музею. Но на GNU/Linux с
ССЗи
G++действительно не лязг ССЗ, и поэтому параметр
-stdlib` выиграл'т работать на всех.
делает компилятор автоматически использовать с libstdc++?
Да, GCC всегда использует с libstdc++, если вы не скажете его, чтобы использовать нет стандартная библиотека с -nostdlib
параметр (в этом случае вам необходимо либо избегать, используя любой из стандартных библиотечных элементов, или использовать опцию -I
и -L
и -Л
флаги, чтобы указать альтернативный набор заголовочных файлов и библиотек).
Я через версии gcc4.8.2 на Ubuntu 13.10 и я хотел бы использовать стандарт C++11. Я уже пропуск-с std=с++11` для компилятора.
Вы Don'т нужно ничего делать. НКУ поставляется со своей собственной реализацией стандартной библиотеки C++ (libstdc++ в), который разработан и протестирован вместе с самим ССЗ, так что версия GCC и версия libstdc++ на 100% совместимы. Если вы компилируете с-с std=с++11 то, что позволяет в C++11 функции в компилятор G++` а также в C++11 особенности в заголовках с libstdc++.
Компилятор использует с libstdc++ автоматически, если вы используете г++ интерфейс, а не интерфейс ССЗ.