find
установит код возврата ненулевой, если обнаружена ошибка. Итак, вы можете сделать:
if ! find ...
then echo had an error >&2
fi |
while ...
(я не уверен, что вы хотите делать с выводом find).
Чтобы собрать все сообщения об ошибках из find на stderr (файловый дескриптор 2), вы можете перенаправить 2 в файл. Например:
if ! find ... 2>/tmp/errors
then zenity --error --text "$(</tmp/errors)"
fi |
while ...
Предлагаемый путь для проверки не является точным для современных Debian/Ubuntu. Команда, вероятно, должна быть:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
И этот сегмент выглядит как часть вывода команды ldd
:
libstdc++.so.6 (GLIBCXX_3.4.9) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.15) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Отсутствие текста not found
после стрелки в любой из этих трех строк указывает на то, что бинарный файл, проверенный программой установки, успешно нашел все необходимое в библиотеке. Таким образом, похоже, что эта зависимость уже обрабатывается вашей системой.
Кстати, вывод Skedler выглядит немного запутанным в отношении названия библиотеки. На самом деле наиболее видимым пользователем -именем должно быть libstdc++
.
В Debian 9 есть две версии libstdc++
доступные в настоящее время :текущая версия упакована как libstdc++6
, а устаревшая версия, которая раньше была популярна в различном проприетарном программном обеспечении, упакована как libstdc++5
. Я предполагаю, что в Ubuntu могут быть варианты с похожими именами -.
Имя GLIBCXX
является префиксом имен версий символов в библиотеке. Обычно это было бы более тесно связано с фактическим именем библиотеки (без префикса «lib» ), но в этом случае знаки плюса являются проблемой, и поэтому они заменяются символами X.
(Старый libstdc++5
использовал другой ABI, несовместимый с текущим, а символы его версии вместо этого использовали префикс GLIBCPP
.)