Skip to main content

"Ldd" కమాండ్ తో ప్రోగ్రామ్ యొక్క షేర్డ్ లైబ్రరీలను కనుగొనండి

Anonim

ఉపయోగించడానికి ldd ఇచ్చిన ప్రోగ్రామ్ ద్వారా అవసరమైన షేర్డ్ గ్రంథాలయాలను చూపించడానికి కమాండ్ - ఒక తప్పిపోయిన డిపెండెన్సీ ఉన్నప్పుడు పని చేయడానికి ఉపయోగపడుతుంది. కమాండ్ కూడా తప్పిపోయిన విధులు మరియు వస్తువులను జాబితా చేస్తుంది.

కమాండ్ సింటాక్స్ ldd

లోపాలను నివారించడానికి ldd కమాండ్ కోసం సరైన వాక్యనిర్మాణాన్ని గమనించండి:

ldd OPTION … FILE …

అందుబాటులోవున్న ldd కమాండ్ స్విచ్లను ఒకటి లేదా అంతకన్నా ఎక్కువ వుపయోగించుము ఎంపిక పై ఆదేశంలో గుర్తించండి:

--help | ఈ సహాయం మరియు నిష్క్రమణను ప్రింట్ చేయండి - సంస్కరణ | ప్రింట్ వెర్షన్ సమాచారం మరియు నిష్క్రమణ -d, --data-relocs | ప్రాసెస్ డేటా పునరావాసలు -ఆర్, - ఫంక్షన్-రీలోస్ | ప్రాసెస్ డేటా మరియు ఫంక్షన్ పునఃసృష్టిలు -u, --unused | ప్రింట్ ఉపయోగించని ప్రత్యక్ష ఆధారపడటం -v, --verbose | అన్ని సమాచారం ప్రింట్

Ldd కమాండ్ ఉపయోగించడం ఎలా

కార్యక్రమం గురించి మరింత సమాచారం పొందడానికి క్రింది కమాండ్ను అమలు చేయండి:

$ ldd -v / path / to / program / executable

అవుట్పుట్ వెర్షన్ సమాచారం అలాగే భాగస్వామ్యం లైబ్రరీలకు మార్గాలు మరియు చిరునామాలు, ఇలాంటి:

$ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

SO ఫైలు అస్సలు లేనట్లయితే, కింది ఆదేశాన్ని ఉపయోగించి తప్పిపోయిన లైబ్రరీలను కనుగొనవచ్చు:

$ ldd -d మార్గం / to / కార్యక్రమం

అవుట్పుట్ ఈ క్రింది విధంగా ఉంటుంది:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​findlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

నమ్మదగని ప్రోగ్రామ్కు వ్యతిరేకంగా ldd ఆదేశం ఎప్పుడూ అమలు చేయకండి, ఎందుకంటే ఇది నిజానికి LDI అమలు చేయబడుతుంది. దానికి బదులుగా, సురక్షితమైన ప్రత్యామ్నాయాన్ని ఉపయోగించుకోండి, ఇది కేవలం ప్రత్యక్ష ఆధారపదార్థాలను మాత్రమే చూపిస్తుంది మరియు మొత్తం డిపెండెన్సీ వృక్షం కాదు:

$ objdump -p / path / to / program | grep అవసరం

ఒక అప్లికేషన్ మార్గం కనుగొనేందుకు ఎలా

మీరు దాని అనుబంధాలను ldd తో గుర్తించదలిస్తే, మీరు అనేక మార్గాల్లో చేయగల అనువర్తనము పూర్తి మార్గం అందించాలి.

ఉదాహరణకు, మీరు ఈ ఫైరుఫాక్సుకు మార్గం కనుగొనేలా ఉంది:

$ ఫైన్ఫాక్స్ను కనుగొని $

కనుగొనే ఆదేశంతో సమస్య ఏమిటంటే, ఇది ఫైర్ఫాక్స్ ఉన్నటువంటి ఎగ్జిక్యూటబుల్ కానీ ప్రతిచోటా మాత్రమే జాబితా చేయబడదు.

  • /etc/skel/.mozilla/firefox
  • / Home // cache / మొజిల్లా / ఫైర్ఫాక్స్
  • /home//.mozilla/firefox
  • / Usr / bin / ఫైర్ఫాక్స్
  • / Usr / lib / ఫైర్ఫాక్స్
  • / Usr / lib / ఫైర్ఫాక్స్ / ఫైర్ఫాక్స్

ఈ విధానం ఓవర్ కిల్ యొక్క బిట్ మరియు మీరు మీ అధికారాలను పెంచుకోవడానికి సుడో కమాండ్ను ఉపయోగించాల్సి ఉంటుంది, లేకుంటే మీరు అనుమతి-తిరస్కరించిన లోపాలను మా వద్ద పొందుతారు.

ఇది బదులుగా ఒక అప్లికేషన్ యొక్క మార్గం కనుగొనేందుకు whereis కమాండ్ ఉపయోగించడానికి సులభం:

$ ఇక్కడ firefox

ఈ సమయం అవుట్పుట్ ఇలా కనిపిస్తుంది:

/ Usr / bin / firefox

/ Etc / firefox

/ Usr / lib / firefox

ఫైరుఫాక్సు కోసం షేర్డ్ గ్రంథాలయాలను కనుగొనడానికి మీరు ఇప్పుడే చేయాల్సినవి కింది ఆదేశాన్ని టైప్ చేస్తాయి:

$ ldd / usr / bin / firefox

ఆదేశం నుండి అవుట్పుట్ ఇలా ఉంటుంది:

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)

లైనక్స్- vdso.so.1 లైబ్రరీ యొక్క పేరు మరియు హెక్స్ సంఖ్య అనేది చిరునామాలో లైబ్రరీ లోడ్ చేయబడే చిరునామా.

మీరు => ఇతర మార్గాల్లోని చాలామంది గమనించవచ్చు, ఇది = ఒక మార్గం తరువాత. ఇది భౌతిక బైనరీకి మార్గం; హెక్స్ సంఖ్య లైబ్రరీ లోడ్ చేయబడే చిరునామా.