G++-9 использует новые символы GLIBCXX при компоновке с libstdc++.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 G++-9 использует новые символы GLIBCXX при компоновке с libstdc++.

Сообщение Anonymous »

Я столкнулся с проблемами при связывании g++ с новыми символами GLIBCXX для std::condition_variable::wait (с g++-9/g++-10/g++-11, libstdc++.so.6.0.30):< /p>
При использовании std::condition_variable::wait при связывании с libstdc++.so.6.0.30 и GLIBCXX_3 используются символы GLIBCXX_3.4.30. Символы .4.11 используются при компоновке с libstdc++.so.6.0.29.
Рассмотрим этот минимальный пример:

Код: Выделить всё

// main.cpp
#include 
#include 

int main(int argc, char** argv) {
std::mutex mtx;
std::condition_variable cv;
std::unique_lock lck(mtx);
cv.wait(lck);
return 0;
}
  • Компилировать с помощью g++-9 main.cpp -o main
  • Проверить версии символов GLIBCXX с помощью строк главная | grep GLIBCXX:

Код: Выделить всё

GLIBCXX_3.4.11
GLIBCXX_3.4.30
GLIBCXX_3.4
_ZSt9terminatev@GLIBCXX_3.4
_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.30
_ZSt20__throw_system_errori@GLIBCXX_3.4.11
_ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11
_ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11
Как видите, символы GLIBCXX_3.4.30 связаны с std::condition_variable::wait, хотя g++-9 не должен использовать эти символы and std::condition_variable::wait должен быть доступен для более старых версий.
При связывании той же программы с libstdc++.so.6.0.29 я получаю этот вывод для струны главная | grep GLIBCXX:

Код: Выделить всё

GLIBCXX_3.4.11
_ZSt20__throw_system_errori@GLIBCXX_3.4.11
_ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11
_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11
_ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11
Я могу запустить эту версию на гораздо более старых системах, поддерживающих GLIBCXX_3.4.11 (вместо GLIBCXX_3.4.30).
Я ожидаю, что GLIBCXX_3.4.11 Символы используются при связывании с libstdc++.so.6.0.30.
Я ошибаюсь или этого не должно происходить?

Подробнее здесь: https://stackoverflow.com/questions/787 ... st-libstdc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»