Я создаю самодельную разделяемую библиотеку, используя G ++ 4.9.3 на Centos 6.8.
В этой библиотеке используются boost :: interprocess :: file_lock и версия boost is 1.41.0.
Я не работаю в нескольких средах ... Я просто использую устройство и никогда не менял среду сборки после сборки библиотеки.
Когда я собираю библиотеку, g ++ хорошо ее строит. Но когда я запускаю его, связывая с двоичным файлом, он показывает
"./ a.out: /usr/lib64/libstdc++.so.6: версия` GLIBCXX_3.4.15 'не найдена (требуется ./libmylib.so)".
Итак, я проверил, какие версии поддерживаются libstdc ++, и он показывает, что он не поддерживает GLIBCXX выше 3.4.13.
GLIBCXX_3.4.13 - это последняя версия поддержки /usr/lib64/libstdc++.so.6.
Даже если я работаю на устройстве и его libstdc ++ не поддерживает GLIBCXX_3.4.15, для сборки библиотеки с моего устройства требуется GLIBCXX_3.4.15.
И другим двоичным файлам не требуется GLIBCXX_3.4.15, даже если я использую тот же компилятор (g ++ 4.9.3). Они просто хорошо работают.
Как библиотека может заметить, что она должна использовать GLIBCXX_3.4.15?
Отличается ли он исходным кодом?
Компилятор сообщает библиотеке, например, «вам нужно использовать GLIBCXX_3.4.15, потому что вы используете некоторую специальную грамматику в своем коде»?
Я хочу знать, кто определяет, какую версию GLIBCXX использовать для двоичного файла.