Должен ли я использовать libc++ или libstdc++? [закрытый]


Я разрабатываю исполняемые файлы интерфейса командной строки для osx и linux с использованием c/c++. Проект будет связан с opencv. Должен ли я использовать libc++ или libstdc++?

3 67

3 ответа:

Я бы использовал родную библиотеку для каждой ОС, т. е. libstdc++ на GNU / Linux и libc++ на Mac OS X.

libc++ не является 100% полным на GNU / Linux, и нет никакого реального преимущества в его использовании, когда libstdc++ является более полным. Кроме того, если вы хотите связать с любыми другими библиотеками, написанными на C++, они почти наверняка будут построены с libstdc++, поэтому вам также нужно будет связать их с этим, чтобы использовать их.

Подробнее здесь о полноте libc++ on различные платформы.

основные дистрибутивы Linux не предоставляют LLVM libc++, потому что:

  1. В отличие от Apple и FreeBSD, GPL+3 не является проблемой, поэтому нет необходимости реализуйте здесь еще один стек.
  2. компоненты Linux были разработаны вокруг GNU libstd++ на протяжении веков. Некоторые из их не стройте ничего другого.
  3. в то время как libc++ сильна в новых функциях, у него есть некоторые проблемы с устаревшим кодом.

Если в конечном итоге libc++ стал частью дистрибутивов, это будет как дополнительный компонент. связывание с ним, вероятно, потребует дополнительных опций.

Как сказал Джонатан, вы должны использовать любой инструмент, включенный по умолчанию. Clang безопасен в Linux для использования, так как настроен как замена GCC, поэтому в этом аспекте вам не нужно беспокоиться о 2 компиляторах. Кроме того, поскольку вы нацелены на две платформы, вы должны взглянуть на cmake.

говорят, что libc++ имеет больше удобочитаемых сообщений об ошибках шаблонов.