Должен ли я использовать libc++ или libstdc++? [закрытый]
Я разрабатываю исполняемые файлы интерфейса командной строки для osx и linux с использованием c/c++. Проект будет связан с opencv. Должен ли я использовать libc++ или libstdc++?
3 ответа:
Я бы использовал родную библиотеку для каждой ОС, т. е. libstdc++ на GNU / Linux и libc++ на Mac OS X.
libc++ не является 100% полным на GNU / Linux, и нет никакого реального преимущества в его использовании, когда libstdc++ является более полным. Кроме того, если вы хотите связать с любыми другими библиотеками, написанными на C++, они почти наверняка будут построены с libstdc++, поэтому вам также нужно будет связать их с этим, чтобы использовать их.
Подробнее здесь о полноте libc++ on различные платформы.
основные дистрибутивы Linux не предоставляют LLVM libc++, потому что:
- В отличие от Apple и FreeBSD, GPL+3 не является проблемой, поэтому нет необходимости реализуйте здесь еще один стек.
- компоненты Linux были разработаны вокруг GNU libstd++ на протяжении веков. Некоторые из их не стройте ничего другого.
- в то время как libc++ сильна в новых функциях, у него есть некоторые проблемы с устаревшим кодом.
Если в конечном итоге libc++ стал частью дистрибутивов, это будет как дополнительный компонент. связывание с ним, вероятно, потребует дополнительных опций.
Как сказал Джонатан, вы должны использовать любой инструмент, включенный по умолчанию. Clang безопасен в Linux для использования, так как настроен как замена GCC, поэтому в этом аспекте вам не нужно беспокоиться о 2 компиляторах. Кроме того, поскольку вы нацелены на две платформы, вы должны взглянуть на cmake.