Rozwijam pliki wykonywalne interfejsu wiersza poleceń zarówno dla OSX, jak i Linux przy użyciu C / C ++. Projekt będzie łączył się z opencv. Czy powinienem używać libc ++ czy libstdc ++?
Rozwijam pliki wykonywalne interfejsu wiersza poleceń zarówno dla OSX, jak i Linux przy użyciu C / C ++. Projekt będzie łączył się z opencv. Czy powinienem używać libc ++ czy libstdc ++?
Odpowiedzi:
Używałbym natywnej biblioteki dla każdego systemu operacyjnego, tj. Libstdc ++ w systemie GNU / Linux i libc ++ w systemie Mac OS X.
libc ++ nie jest w 100% kompletne w systemie GNU / Linux i nie ma żadnych korzyści z używania go, gdy libstdc ++ jest bardziej kompletne. Ponadto, jeśli chcesz połączyć się z innymi bibliotekami napisanymi w C ++, prawie na pewno zostaną one zbudowane za pomocą libstdc ++, więc będziesz musiał również połączyć się z nimi, aby z nich korzystać.
Więcej informacji tutaj o kompletności libc ++ na różnych platformach.
std::ctype_base::mask
wartości na <ctype.h>
stałe jest całkowicie zależne od platformy. (Funkcje wewnętrzne procesora są dostarczane przez kompilator, obsługa wyjątków jest wykonywana przez niskopoziomową warstwę ABI, ale operacje wejścia / wyjścia są zwykle wykonywane w całości w bibliotekach C ++ i C, a nie w elementach niskiego poziomu).
Główne dystrybucje Linuksa nie zapewniają LLVM libc ++, ponieważ:
Jeśli ostatecznie libc ++ stanie się częścią dystrybucji, będzie opcjonalnym komponentem. tworzenie linków do niego będzie prawdopodobnie wymagało dodatkowych opcji.
Jak powiedział Jonathan, powinieneś używać dowolnego narzędzia, które jest domyślnie dołączone. Clang jest bezpieczny w użyciu w Linuksie, ponieważ jest skonfigurowany jako zamiennik GCC, więc w tym aspekcie nie musisz się martwić o 2 kompilatory. Ponieważ celujesz w dwie platformy, powinieneś przyjrzeć się cmake.