Ich habe eine Menge C/C++-Code unter Linux, den ich auf einem Linux-Hostcomputer erstellen und in einer benutzerdefinierten Containerlösung ausführen muss (sauberes Linux). Um das Programm in meinem Container ausführen zu können, benötige ich alle darin enthaltenen Hostabhängigkeiten des Programms.
Problem
Um alle Abhängigkeiten meines Programms aufzulösen, habe ich mich für die Verwendung von ldd entschieden. Das Problem ist, dass mir aufgefallen ist, dass die Laufzeitumgebung libgcc_s.so.1 vom LDD nicht als direkte Abhängigkeit aufgeführt wird. Für einige der Programme, die libpthread.so verwenden, benötigen sie zur Laufzeit libgcc_s.so.1, andernfalls erhalte ich Folgendes: „libgcc_s.so.1 muss installiert sein, damit pthread_cancel funktioniert.“ Arbeit".
ldd-Inhalte für mein Programm:
Code: Select all
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)
Code: Select all
linux-vdso.so.1 (0x00007avf7fce000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffbdd88000)
/lib64/ld-linux-x86-64.so.2
Natürlich gab es andere Programme, die das nicht erforderten alle libgcc_s.so zur Laufzeit und sie liefen ohne Probleme in meinem Container.
Frage
Die Frage ist also Wie kann ich feststellen, welches Programm libgcc_s.so benötigt und welches nicht? Danke