Tôi đang phát triển các tệp thực thi giao diện dòng lệnh cho cả osx và linux bằng c / c ++. Dự án sẽ liên kết với opencv. Tôi nên sử dụng libc ++ hay libstdc ++?
Tôi đang phát triển các tệp thực thi giao diện dòng lệnh cho cả osx và linux bằng c / c ++. Dự án sẽ liên kết với opencv. Tôi nên sử dụng libc ++ hay libstdc ++?
Câu trả lời:
Tôi sẽ sử dụng thư viện gốc cho mỗi hệ điều hành, tức là libstdc ++ trên GNU / Linux và libc ++ trên Mac OS X.
libc ++ không hoàn chỉnh 100% trên GNU / Linux và không có lợi thế thực sự để sử dụng nó khi libstdc ++ hoàn thiện hơn. Ngoài ra, nếu bạn muốn liên kết đến bất kỳ thư viện nào khác được viết bằng C ++, chúng gần như chắc chắn sẽ được xây dựng bằng libstdc ++, vì vậy bạn cũng cần phải liên kết với thư viện đó để sử dụng chúng.
Thông tin thêm tại đây về tính hoàn chỉnh của libc ++ trên các nền tảng khác nhau.
std::ctype_base::mask
giá trị sang <ctype.h>
hằng số hoàn toàn phụ thuộc vào nền tảng. (Bản chất của CPU được cung cấp bởi trình biên dịch, việc xử lý ngoại lệ được thực hiện bởi lớp ABI cấp thấp, nhưng IO thường được thực hiện hoàn toàn trong thư viện C ++ và C, không phải thứ cấp thấp).
Các bản phân phối Linux chính không cung cấp LLVM libc ++, vì:
Nếu cuối cùng libc ++ trở thành một phần của các bản phân phối, nó sẽ là một thành phần tùy chọn. liên kết chống lại nó có thể sẽ yêu cầu các tùy chọn bổ sung.
Giống như Jonathan đã nói, bạn nên sử dụng bất kỳ công cụ nào được bao gồm theo mặc định. Clang an toàn trong Linux để sử dụng vì được định cấu hình như một sự thay thế GCC, vì vậy về khía cạnh đó, bạn không phải lo lắng về 2 trình biên dịch. Ngoài ra, vì bạn đang nhắm mục tiêu hai nền tảng, bạn nên xem xét cmake.