У меня есть набор кода C/C++ для Linux, который мне нужно собрать на хост-компьютере Linux и запустить в специальном контейнерном решении. (чистый линукс). Чтобы иметь возможность запускать программу внутри моего контейнера, мне нужны все зависимости хоста программы внутри него.
Проблема
Чтобы разрешить все зависимости моей программы, я решил использовать ldd. Проблема в том, что я заметил, что среда выполнения libgcc_s.so.1 не указана в ldd как прямая зависимость. Для некоторых программ, использующих libpthread.so, во время выполнения требуется libgcc_s.so.1, в противном случае я получаю следующее: «libgcc_s.so.1 должен быть установлен, чтобы pthread_cancel мог работа".
ldd контент для моей программы:
Код: Выделить всё
linux-vdso.so.1 (0x0000fff7fceee000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fssf7f75000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faaf7d83000)
/lib64/ld-linux-x86-64.so.2 (0x00007fffddfcf000)
Код: Выделить всё
linux-vdso.so.1 (0x00007avf7fce000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffbdd88000)
/lib64/ld-linux-x86-64.so.2
Конечно, были и другие программы, которые не требовали любые библиотеки libgcc_s.so во время выполнения, и они без проблем запускались в моем контейнере.
Вопрос
Итак, вопрос в следующем как я могу определить, какой программе нужен libgcc_s.so, а какой нет? Спасибо
Подробнее здесь: https://stackoverflow.com/questions/793 ... gcc-s-so-1
Мобильная версия