Я разрабатываю исполняемые файлы интерфейса командной строки для OSX и Linux, используя c/С++. Проект будет связан с opencv. Должен ли я использовать libc++ или libstdc++?
Должен ли я использовать libc++ или libstdc++?
Ответы (2)
Я бы использовал родную библиотеку для каждой ОС, то есть libstdc++ в GNU/Linux и libc++ в Mac OS X.
libc++ не на 100% завершен в GNU/Linux, и нет никакого реального преимущества в его использовании, когда libstdc++ более совершенен. Кроме того, если вы хотите связать какие-либо другие библиотеки, написанные на C++, они почти наверняка будут собраны с помощью libstdС++, поэтому вам также потребуется связать ее, чтобы использовать их.
Дополнительная информация здесь о полноте libc++ на различных платформах.
std::ctype_base::mask
в константы <ctype.h>
полностью зависит от платформы. (Внутренние функции ЦП предоставляются компилятором, обработка исключений выполняется низкоуровневым уровнем ABI, но ввод-вывод обычно полностью выполняется в библиотеках C++ и C, а не в низкоуровневых материалах).
- person Jonathan Wakely; 29.11.2013
Основные дистрибутивы Linux не предоставляют LLVM libc++, потому что:
- В отличие от Apple и FreeBSD, GPL+3 не является проблемой, поэтому здесь нет необходимости реализовывать еще один стек.
- Компоненты Linux веками разрабатывались на базе GNU libstd++. Некоторые из них не строятся ни на чем другом.
- Хотя libc++ сильна в новых функциях, у нее есть некоторые проблемы с устаревшим кодом.
Если со временем libc++ станет частью дистрибутивов, то это будет необязательный компонент. связывание с ним, вероятно, потребует дополнительных опций.
Как сказал Джонатан, вы должны использовать любой инструмент, включенный по умолчанию. Clang безопасен для использования в Linux, поскольку настроен как замена GCC, поэтому в этом аспекте вам не нужно беспокоиться о двух компиляторах. Кроме того, поскольку вы ориентируетесь на две платформы, вам следует взглянуть на cmake.