Sto sviluppando eseguibili dell'interfaccia della riga di comando per OSX e Linux utilizzando c / c ++. Il progetto si collegherà contro opencv. Dovrei usare libc ++ o libstdc ++?
Sto sviluppando eseguibili dell'interfaccia della riga di comando per OSX e Linux utilizzando c / c ++. Il progetto si collegherà contro opencv. Dovrei usare libc ++ o libstdc ++?
Risposte:
Vorrei utilizzare la libreria nativa per ogni sistema operativo, ad esempio libstdc ++ su GNU / Linux e libc ++ su Mac OS X.
libc ++ non è completo al 100% su GNU / Linux e non c'è alcun vantaggio nell'usarlo quando libstdc ++ è più completo. Inoltre, se vuoi collegarti a qualsiasi altra libreria scritta in C ++, quasi sicuramente sarà stata compilata con libstdc ++, quindi dovrai collegarti anche a quella per usarle.
Maggiori informazioni qui sulla completezza di libc ++ su varie piattaforme.
std::ctype_base::mask
valori alle <ctype.h>
costanti dipende interamente dalla piattaforma. (Gli elementi intrinseci della CPU sono forniti dal compilatore, la gestione delle eccezioni viene eseguita da un livello ABI di basso livello, ma l'IO è tipicamente fatto interamente nelle librerie C ++ e C, non cose di basso livello).
Le principali distribuzioni Linux non forniscono LLVM libc ++, perché:
Se alla fine libc ++ diventerà parte delle distribuzioni, sarà un componente opzionale. il collegamento contro di esso richiederà probabilmente opzioni extra.
Come ha detto Jonathan, dovresti usare qualsiasi strumento incluso per impostazione predefinita. Clang è sicuro in Linux da usare poiché è configurato come un sostituto di GCC, quindi in questo aspetto non devi preoccuparti di 2 compilatori. Inoltre, poiché stai prendendo di mira due piattaforme, dovresti dare un'occhiata a cmake.