Zajmuję się tworzeniem plików wykonywalnych interfejsu wiersza poleceń dla osx i linux przy użyciu c/C++. Projekt będzie łączył się z opencv. Czy powinienem używać libC++ lub libstdC++?Czy powinienem używać libC++ lub libstdC++?
Odpowiedz
użyłbym natywnej biblioteki dla każdego systemu operacyjnego tj libstdC++ na GNU/Linux i libC++ na Mac OS X.
libC++ nie jest w 100% kompletna na GNU/Linux, a nie ma realne zaletą korzystania z niego, gdy libstdC++ jest bardziej kompletny. Ponadto, jeśli chcesz połączyć się z innymi bibliotekami napisanymi w C++, prawie na pewno zostaną zbudowane z libstdC++, więc będziesz musiał również połączyć się z nimi, aby z nich korzystać.
Czy możesz opracować/dostarczyć linki o statusie kompletności biblioteki libC++ w systemie Linux? Nie do końca rozumiem, dlaczego jest to zależne od platformy, ponieważ libC++ to tylko garść nagłówków biblioteki Standard. Czy masz na myśli, że trzeba zbudować Clang wrt do bibliotek uruchomieniowych LLVM, które nie są dobrze obsługiwane w systemie Linux? – TemplateRex
@TemplateRex, nie znam aktualnego statusu, możesz zajrzeć na http://libcxx.llvm.org/. Nie podążam za libC++, więc pytasz niewłaściwą osobę, ale czy sugerujesz, że "garść nagłówków Standard Library" nigdy nie będzie miała żadnego specyficznego dla platformy kodu? –
Cóż, skoro możesz zainstalować Linuksa na prawie tym samym sprzęcie Apple, na którym działa Mac OS X, zastanawiam się, skąd wzięłyby się zależności między platformami w nagłówkach C++? Być może niektóre opakowania wokół wbudowanego procesora wewnętrznego lub obsługi IO i obsługi wyjątków zależą od systemu, ale zrozumiałem, że takie rzeczy są obsługiwane w warstwach binarnych typu librcxxrt. Czy nagłówki w Bibliotece standardowej nie powinny być bardziej lub mniej wtykane? – TemplateRex
Główne dystrybucje Linux nie zapewniają LLVM libC++, ponieważ:
- W przeciwieństwie do Apple i FreeBSD GPL + 3 nie jest problem, więc nie ma potrzeby, aby wdrożyć kolejny stos tutaj.
- Komponenty dla systemu Linux zostały opracowane na podstawie GNU libstd ++ przez wieki. Niektóre z nich nie opierają się na niczym innym.
- Chociaż libC++ ma silne działanie w nowych funkcjach, ma pewne problemy ze starszym kodem.
Jeśli w końcu libC++ stanie się częścią dystrybucji, będzie to składnik opcjonalny. połączenie z nią prawdopodobnie będzie wymagało dodatkowych opcji.
Tak jak powiedział Jonathan, powinieneś używać dowolnego narzędzia dołączonego domyślnie. Clang jest bezpieczny w Linuksie, ponieważ jest skonfigurowany jako zamiennik GCC, więc pod tym względem nie musisz się martwić o 2 kompilatory. Również dlatego, że celujesz w dwie platformy, powinieneś rzucić okiem na cmake.
Clang nie jest zamiennikiem GCC ... Tylko innym kompilatorem. –
Mówi się, że libC++ ma więcej czytelnych dla człowieka komunikatów o błędach na błędach szablonu.
Czy na pewno nie mylicie twierdzeń o lepszej diagnostyce z klangiem niż gcc? Co nie zawsze jest prawdą w dzisiejszych czasach i jest całkowicie oddzielone od standardowej implementacji biblioteki. Jeśli masz jakieś przykłady, gdzie wiadomości są lepsze, a nie pogłoski, zgłoś błędy na https://gcc.gnu.org/bugs/ –
- 1. była biblioteką zbudowaną z libC++ lub libstdC++ na Macu
- 2. Usuwanie zależności Boost libstdC++ z kodem ++/libC++?
- 3. Czy powinienem używać System.out.println() lub czegoś innego?
- 4. Czy powinienem używać odbiornika lub obserwatora?
- 5. czy powinienem używać urandom lub openssl_random_pseudo_bytes?
- 6. Czy powinienem używać nav lub ul
- 7. Czy powinienem używać dziedziczenia lub kompozycji?
- 8. Czy powinienem używać tutaj awakeFromNib lub initWithCoder?
- 9. Java: Czy powinienem używać float lub Float?
- 10. Czy powinienem używać tsd lub typowania?
- 11. Czy powinienem używać rand() lub rand_s()?
- 12. Czy istnieje serwer LibC?
- 13. Czy powinienem używać czcionek typograficznych?
- 14. Czy powinienem używać Universal-ctags?
- 15. Czy powinienem używać takiego constexpr?
- 16. Dlaczego powinienem lub nie powinienem używać API camera2 w Androidzie?
- 17. Numpy: Czy powinienem używać newaxis czy None?
- 18. Czy C++ 11 wymaga, aby alokatory były domyślnie skonstruowane, libstdC++ i libC++ nie zgadzały?
- 19. Czy powinienem używać funkcji php mail lub phpmailer?
- 20. Czy powinienem używać klasy deskryptorów lub fabryki nieruchomości?
- 21. Czy powinienem używać has_one lub belongs_to w ruby na szynach?
- 22. Czy powinienem używać zwinięcia LWP lub lib Perla?
- 23. Czy powinienem używać MSMQ lub SQL Service Broker dla transakcji?
- 24. Czy powinienem używać materiału dla kątowego lub materiału dla AngularJS?
- 25. Czy powinienem używać obiektów Entity Framework, DataSet lub Custom?
- 26. Aplikacja Windows Store: Czy powinienem używać ListBox lub ListView?
- 27. Czy powinienem używać w tym przypadku dziedziczenia lub kompozycji?
- 28. Czy powinienem używać Angular UI Bootstrap lub zwykłego Bootstrap 3?
- 29. Mam zadanie Rails: czy powinienem używać skryptu/runnera lub rake'a?
- 30. Czy powinienem używać ClassIgniter's Unit Testing Class lub PHPUnit/TOAST?
Nie wiem, ale może Cię to zainteresować: http://clang-developers.42468.n3.nabble.com/Problem-with-libc-libstdc-interoperability-on-OS-X-td4030121 .html – DarenW
[Ta odpowiedź] (http://stackoverflow.com/questions/12542971/using-libstdc-compiled-libraries-w-clang-stdlib-libc) może być pomocna. –
jeśli łączysz się z opencv, użyj libstdC++. Oto dlaczego http://stackoverflow.com/questions/13037659/opencv-build-issue-cant-find-ext-atomicity-h – Loozie