Gebruik de ldd commando om de gedeelde bibliotheken te tonen die vereist zijn voor een bepaald programma - handig om uit te werken als er een ontbrekende afhankelijkheid is. De opdracht vermeldt ook ontbrekende functies en objecten.
ldd Command Syntax
Let op de juiste syntaxis voor de opdracht ldd om fouten te voorkomen:
ldd OPTION … FILE …
Gebruik een of meer van de beschikbare LDD-opdrachtschakelaars die in de KEUZE spot in bovenstaande opdracht: --help | druk deze hulp af en verlaat het menu --versie | print versie-informatie en exit -d, --data-relocs | gegevensverplaatsingen verwerken -r, - function-relocs | procesgegevens en functie verplaatsingen -u, --unused | print ongebruikte directe afhankelijkheden -v, --verbose | print alle informatie Voer het volgende commando uit om meer informatie over een programma te krijgen: $ ldd -v / path / to / program / uitvoerbaar
De uitvoer toont versie-informatie evenals de paden en adressen van de gedeelde bibliotheken, zoals deze: $ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Als het SO-bestand helemaal niet bestaat, kunt u de ontbrekende bibliotheken vinden met behulp van de volgende opdracht: $ ldd -d pad / naar / programma
De uitvoer is vergelijkbaar met het volgende: linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)
Voer nooit de opdracht ldd uit tegen een niet-vertrouwd programma, omdat de ldd deze mogelijk daadwerkelijk kan uitvoeren. Gebruik in plaats daarvan een veiliger alternatief dat alleen de directe afhankelijkheden laat zien en niet de volledige afhankelijkheidsboom: $ objdump -p / path / to / program | grep NODIG Je moet het volledige pad naar een applicatie opgeven als je de afhankelijkheden met ldd wilt vinden, wat je op verschillende manieren kunt doen. Dit is bijvoorbeeld hoe u het pad naar Firefox kunt vinden: $ find / -name firefox
Het probleem met de opdracht find is echter dat niet alleen het uitvoerbare bestand wordt vermeld, maar overal waar Firefox zich bevindt, zoals dit: Deze aanpak is een beetje overdreven en het is mogelijk dat je de opdracht sudo moet gebruiken om je rechten te verhogen, anders krijg je waarschijnlijk veel fouten die door de toestemming zijn geweigerd. In plaats daarvan is het veel eenvoudiger om de opdracht whereis te gebruiken om het pad van een toepassing te vinden: $ whereis firefox
Deze keer ziet de uitvoer er als volgt uit: / Usr / bin / firefox / Etc / firefox / Usr / lib / firefox Het enige dat u nu hoeft te doen om de gedeelde bibliotheken voor Firefox te vinden, typ de volgende opdracht: $ ldd / usr / bin / firefox
De uitvoer van het commando zal ongeveer zo zijn: linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++. so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000) Linux-vdso.so.1 is de naam van de bibliotheek en het hex-nummer is het adres waarnaar de bibliotheek in het geheugen zal worden geladen. Op veel van de andere regels merk je dat het => symbool wordt gevolgd door een pad. Dit is het pad naar het fysieke binaire; het hex-nummer is het adres waar de bibliotheek wordt geladen. Hoe het ldd commando te gebruiken
Hoe het pad naar een toepassing te vinden




