Chúng tôi đã nhận được một số thư viện (.a) được biên dịch cho Linux (có thể được biên dịch bằng GCC 6.x)._GLIBCXX_USE_CXX11_ABI, GCC 4.8 và khả năng tương thích ABI
Chúng tôi đang sử dụng GCC 4.8 và chúng tôi gặp phải lỗi thuộc loại: undefined reference to std::__cxx11::basic_string
khi cố liên kết.
Thông thường, điều này có thể được khắc phục bằng cách đảm bảo tất cả các đơn vị đã được biên dịch với cùng một cờ _GLIBCXX_USE_CXX11_ABI
. Tuy nhiên nếu tôi hiểu chính xác, điều này đã được giới thiệu bởi GCC 5.1 trở đi.
- Có cách nào để thực hiện công việc này với GCC 4.8 hoặc chúng tôi có cần yêu cầu mọi người biên dịch lại các thư viện với một khác nhau
_GLIBCXX_USE_CXX11_ABI
không? - Tôi đoán nếu chúng tôi có thể chuyển sang GCC> = 5.1, chúng tôi có thể thực hiện công việc này?
Cảm ơn!
Xem thêm [GCC5 và C++ 11 ABI] (https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/) trên blog của Red Hat , [Dual ABI] (https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html) trong hướng dẫn GCC và [Liên kết các vấn đề do ký hiệu với abi :: cxx11?] (https: // stackoverflow.com/q/36159238/608639) trên Stack overflow. Điều đó khiến chúng tôi gặp rất nhiều vấn đề, đặc biệt khi Clang không nhận thức được GCC5/C++ 11. Điều này trông giống như dup của bạn, nhưng nó không có câu trả lời: [Làm thế nào tôi nên xử lý ABI không tương thích giữa gcc-4.9 và gcc-5?] (Https://stackoverflow.com/q/37145066/608639) – jww