Skip to main content

"লিড" কমান্ড দিয়ে একটি প্রোগ্রামের ভাগ করা লাইব্রেরি খুঁজুন

Ben jij een linkse rat of een rechtse zak? | VRT NLS #01 (জুন 2025)

Ben jij een linkse rat of een rechtse zak? | VRT NLS #01 (জুন 2025)
Anonim

ব্যবহার ldd কোনো প্রদত্ত প্রোগ্রামের দ্বারা প্রয়োজনীয় শেয়ারকৃত লাইব্রেরি প্রদর্শন করার কমান্ড - অনুপস্থিত নির্ভরতা থাকা অবস্থায় কাজ করার জন্য দরকারী। কমান্ড অনুপস্থিত ফাংশন এবং বস্তু তালিকা।

লিড কমান্ড সিনট্যাক্স

ত্রুটি এড়াতে ldd কমান্ডের জন্য সঠিক সিনট্যাক্সটি দেখুন:

অদ্ভুত বিকল্প … ফাইল …

উপলব্ধ লিড কমান্ড সুইচ এক বা একাধিক ব্যবহার করুন অনুযায়ী OPTION উপরের কমান্ড স্পট:

--help | এই সাহায্য প্রিন্ট এবং প্রস্থান - বর্ধিতকরণ | মুদ্রণ সংস্করণ তথ্য এবং প্রস্থান -ডি, --ডাটা-রিলক্স | প্রক্রিয়া তথ্য স্থানান্তর -আর, - ফাংশন-রিলাক্স | প্রক্রিয়া তথ্য এবং ফাংশন স্থানান্তর -উ, - unused | অব্যবহৃত সরাসরি নির্ভরতা মুদ্রণ -ভি, --ভারবক্স | সব তথ্য মুদ্রণ করুন

কিভাবে লিড কমান্ড ব্যবহার করবেন

একটি প্রোগ্রাম সম্পর্কে আরও তথ্য পেতে নিম্নলিখিত কমান্ডটি চালান:

$ ldd -v / পাথ / থেকে / প্রোগ্রাম / এক্সিকিউটেবল

আউটপুটটি ভাগ করে নেওয়া লাইব্রেরিতে সংস্করণ তথ্য পাশাপাশি পাথ এবং ঠিকানাগুলি দেখায়:

$ 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 পথ / টু / প্রোগ্রাম

আউটপুট নিম্নলিখিত অনুরূপ:

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

অবিশ্বাস্য প্রোগ্রামের বিরুদ্ধে লিড কমান্ডটি চালান না কারণ এটি আসলেই এটি কার্যকর করতে পারে। এর পরিবর্তে, নিরাপদ বিকল্পটি ব্যবহার করুন যা সরাসরি নির্ভরশীলতাগুলি দেখায় এবং সম্পূর্ণ নির্ভরতা বৃক্ষ নয়:

$ objdump -p / পাথ / থেকে / প্রোগ্রাম | grep প্রয়োজন

কিভাবে একটি অ্যাপ্লিকেশন পথ খুঁজে পেতে

যদি আপনি তার নির্ভরতাগুলিকে ldd সঙ্গে সন্ধান করতে চান তবে আপনাকে একটি অ্যাপ্লিকেশনের সম্পূর্ণ পথ সরবরাহ করতে হবে, যা আপনি বিভিন্ন উপায়ে করতে পারেন।

উদাহরণস্বরূপ, এইভাবে আপনি ফায়ারফক্সের পথ খুঁজে পাবেন:

$ খুঁজে / নাম-ফায়ারফক্স

তবে অনুসন্ধান কমান্ডের সমস্যাটি হ'ল এটি এক্সিকিউটেবলের তালিকা নয় বরং সর্বত্র যে ফায়ারফক্স অবস্থিত, এটি এই রকম:

  • /etc/skel/.mozilla/firefox
  • / হোম // ক্যাশে / মজিলা / ফায়ারফক্স
  • /home//.mozilla/firefox
  • / Usr / bin / ফায়ারফক্স
  • / Usr / lib / ফায়ারফক্স
  • / Usr / lib / ফায়ারফক্স / ফায়ারফক্স

এই পদ্ধতিটি একটি overkill এর একটি বিট এবং আপনার সুবিধার উন্নতি করতে আপনাকে সুডো কমান্ড ব্যবহার করতে হবে, অন্যথায় আপনি অনেক অনুমতি-অস্বীকার ত্রুটি পেতে পারে।

এটি অ্যাপ্লিকেশনের পথ খুঁজে পাওয়ার জন্য whereis কমান্ডটি ব্যবহার করার পরিবর্তে অনেক সহজ:

$ whereis ফায়ারফক্স

এই সময় আউটপুট এই চেহারা হতে পারে:

/ Usr / bin / ফায়ারফক্স

জন্য / etc / ফায়ারফক্স

/ Usr / lib / ফায়ারফক্স

ফায়ারফক্সের জন্য ভাগ করা লাইব্রেরিগুলি সন্ধান করার জন্য আপনাকে এখন যা করতে হবে তা নিম্নোক্ত কমান্ডটি টাইপ করুন:

$ 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 লাইব্রেরির নাম এবং হেক্স নম্বর ঠিকানা যেখানে লাইব্রেরি মেমরি লোড করা হবে।

আপনি অন্যান্য লাইনগুলিতে লক্ষ্য করবেন যে => প্রতীকটি একটি পাথ অনুসরণ করে। এই শারীরিক বাইনারি পথ হয়; হেক্স নম্বর ঠিকানা যেখানে লাইব্রেরি লোড করা হবে।