ലിനക്സിൽ "ldd" കമാൻഡ് ഉപയോഗിയ്ക്കുന്നു

തന്നിരിക്കുന്ന ഒരു പ്രോഗ്രാമിനു് ആവശ്യമുള്ള പങ്കിട്ട ലൈബ്രറികളെ കാണിയ്ക്കുന്നതിനായി ldd കമാൻഡ് ഉപയോഗിയ്ക്കാം.

വിട്ടുപോയ ആശ്രിതത്വം ഉള്ളപ്പോൾ പ്രവർത്തിക്കുമ്പോൾ ഇത് ഉപയോഗപ്രദമാണ്, കൂടാതെ കാണാതായ ഫങ്ഷനുകളും വസ്തുക്കളും കാണിക്കാൻ ഇത് ഉപയോഗിക്കാം.

കമാൻഡ് സിന്റാക്സ്

Ldd കമാൻഡ് ഉപയോഗിക്കുമ്പോൾ ഇത് ശരിയായ സിന്റാക്സ് ആണ്:

ldd [OPTION] ... ഫയൽ ...

മുകളിൽ പറഞ്ഞിരിക്കുന്ന കമാൻഡിൽ [ഓപ്ഷൻ] സ്ഥലത്ത് ലഭ്യമാക്കുവാൻ സാധിക്കുന്ന ലഭ്യമായ കമാൻഡ് സ്വിച്ചുകൾ ഇവിടെ ലഭ്യമാണ്:

--help ഈ സഹായം പ്രിന്റ് ഔട്ട് ചെയ്യുക, exit --version print version വിവരവും exit -d, --data-relocs പ്രക്രിയ ഡാറ്റ relocations -r, --function- പ്രക്രിയ പ്രക്രിയ ഡാറ്റയും ഫംഗ്ഷൻ relocations -u, --unused പ്രിന്റ് ഉപയോഗിക്കാത്ത നേരിട്ടുള്ള ഡിപൻഡൻസികൾ -v, --verbose എല്ലാ വിവരങ്ങളും പ്രിന്റ് ചെയ്യുക

Ldd കമാൻഡ് എങ്ങിനെ ഉപയോഗിക്കാം

ഏതെങ്കിലും ldd കമാൻഡിൽ നിന്നും കൂടുതൽ വിവരങ്ങൾ ലഭിക്കുന്നതിന് നിങ്ങൾക്ക് താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിക്കാം:

ldd -v / path / to / program / executable

ഔട്ട്പുട്ട് പതിപ്പ് വിവരവും ഷെയർഡ് ലൈബ്രറികളിലേക്കുള്ള വഴികളും വിലാസങ്ങളും കാണിക്കുന്നു, ഇതുപോലെയുള്ള:

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 path / to / program

ഔട്ട്പുട്ട് ഇനി പറയുന്നതിന് സമാനമാണ്:

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

പ്രധാനപ്പെട്ടതു്: കമാൻഡ് യഥാര്ത്ഥത്തില് പ്രവര്ത്തിപ്പിക്കാന് സാധിക്കാത്ത ശേഷം വിശ്വസനീയമല്ലാത്ത ഒരു പ്രോഗ്രാം ഉപയോഗിച്ച് ldd ആജ്ഞ ഒരിക്കലും പ്രവര്ത്തിക്കരുത്. ഇത് സുരക്ഷിതമായ ഒരു ബദലാണ്, അത് നേരിട്ടുള്ള ഡിപൻസൻസുകളെ മാത്രം ആശ്രയിക്കുന്നതല്ല, മുഴുവൻ ആശ്രിതത്വ വൃക്ഷത്തെയല്ല: objdump -p / path / to / program | grep ആവശ്യമാണ് .

ഒരു ആപ്ലിക്കേഷനിലേക്കുള്ള വഴി എങ്ങനെ കണ്ടെത്താം

നിങ്ങൾക്ക് ldd ഉപയോഗിച്ച് അതിന്റെ ഡിപൻഡൻസികൾ കണ്ടുപിടിക്കാൻ ആഗ്രഹിക്കുന്നെങ്കിൽ ഒരു പ്രയോഗം മുഴുവൻ നൽകണം. അത് നിങ്ങൾക്ക് അനേകം വഴികൾ ചെയ്യാൻ കഴിയും.

ഉദാഹരണത്തിന്, നിങ്ങൾ ഫയർഫോക്സിലേക്കുള്ള വഴി കണ്ടെത്തുന്നത് ഇതാണ്:

/ -name firefox കണ്ടുപിടിക്കുക

എന്നിരുന്നാലും കണ്ടുപിടിക്കാൻ ബുദ്ധിമുട്ടുള്ള പ്രശ്നമുണ്ട്, പക്ഷേ ഫയർഫോക്സ് സ്ഥിതി ചെയ്യുന്ന എല്ലായിടത്തും ഇത് എക്സിക്യൂട്ടബിൾ ആയിരിക്കില്ല,

ഈ സമീപനം ഒരു ഓവർസ്കിൽ ആണ്, നിങ്ങളുടെ അവകാശങ്ങൾ ഉയർത്താൻ നിങ്ങൾ sudo കമാൻഡിംഗ് ഉപയോഗിക്കേണ്ടി വന്നേക്കാം, അല്ലെങ്കിൽ നിങ്ങൾക്ക് ധാരാളം ലൈസൻസ് നിരസിക്കപ്പെടാൻ സാധ്യതയുണ്ട്.

ഒരു പ്രയോഗം വഴി കണ്ടുപിടിക്കുന്നതിനുള്ള നിർദ്ദേശം ഇവിടെ ഉപയോഗിയ്ക്കുന്നതു് വളരെ എളുപ്പമാണു്:

ഫയർഫോക്സ് എവിടെയാണ്

ഈ സമയം ഔട്ട്പുട്ട് ഇതുപോലെ ആകാനിടയുണ്ട്:

/ 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 ++. അങ്ങനെ 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 ലൈബ്രറിയുടെ പേരാണ്. ഹെക്സാഡ് മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യേണ്ട വിലാസം ഹെക്സാ നമ്പരാണ്.

നിങ്ങൾ => ചിഹ്നം തുടർന്ന് ഒരു പാത്ത് പിന്തുടരുന്ന മറ്റു പല വരികളിലും കാണാം. ഇത് ഭൌതിക ബൈനറിയിലേക്കുള്ള വഴിയാണ്. ലൈബ്രറി ലോഡ് ചെയ്യപ്പെടുന്ന വിലാസമാണ് ഹെക്സാ നമ്പർ.