Estou desenvolvendo executáveis de interface de linha de comando para osx e linux usando c / c ++. O projeto será vinculado ao opencv. Devo usar libc ++ ou libstdc ++?
Estou desenvolvendo executáveis de interface de linha de comando para osx e linux usando c / c ++. O projeto será vinculado ao opencv. Devo usar libc ++ ou libstdc ++?
Respostas:
Eu usaria a biblioteca nativa para cada sistema operacional, ou seja, libstdc ++ no GNU / Linux e libc ++ no Mac OS X.
libc ++ não é 100% completo no GNU / Linux, e não há nenhuma vantagem real em usá-lo quando o libstdc ++ é mais completo. Além disso, se você deseja vincular a quaisquer outras bibliotecas escritas em C ++, é quase certo que elas tenham sido construídas com libstdc ++, portanto, você também precisará vincular a ela para usá-las.
Mais informações aqui sobre a integridade da libc ++ em várias plataformas.
std::ctype_base::mask
valores para <ctype.h>
constantes é totalmente dependente da plataforma. (Os intrínsecos da CPU são fornecidos pelo compilador, o tratamento de exceções é feito por uma camada ABI de baixo nível, mas o IO normalmente é feito inteiramente nas bibliotecas C ++ e C, não em coisas de baixo nível).
As principais distribuições do Linux não fornecem LLVM libc ++ porque:
Se eventualmente libc ++ se tornar parte das distribuições, será como um componente opcional. vincular a ele provavelmente exigirá opções extras.
Como Jonathan disse, você deve usar qualquer ferramenta incluída por padrão. O Clang é seguro para uso no Linux, pois está configurado como um substituto do GCC, portanto, nesse aspecto, você não precisa se preocupar com 2 compiladores. Além disso, como seu objetivo é duas plataformas, você deve dar uma olhada no cmake.
diz-se que a libc ++ tem mais mensagens de erro legíveis por humanos em erros de modelo.