আমি কীভাবে বিএফডি ব্যবহার করছি তা যাচাই করবেন?


1

gccলিনাক্স মেশিনে কমান্ড চালানোর সময় আমি একটি ত্রুটির মুখোমুখি হয়েছি এবং গুগলিংয়ের সময় আমি দেখতে পেলাম যে লোকেরা বলে, এটি bfdগ্রন্থাগারের একটি নতুন সংশোধনীতে স্থির করা হয়েছে । আরও অনুসন্ধান করে, আমি আবিষ্কার করেছি, এটি bfdএকটি স্থির গ্রন্থাগার হতে পারে যা gccতৈরির সাথে সংযুক্ত ছিল, একটি ভাগ করা ডায়নামিক লাইব্রেরি নয়, তবে আমি সে সম্পর্কে নিশ্চিত নই।

কীভাবে সন্ধান করতে হবে, gccআমার কাছে থাকা সংস্করণটি bfdস্থিতিশীল বা গতিশীলভাবে ব্যবহার করছে কিনা এবং এর সংস্করণটি কী bfd?

উত্তর:


2

BFD প্রোগ্রাম, যার মধ্যে রয়েছে যে গনুহ এর Binutils আপ করতে ব্যবহৃত লাইব্রেরি ld, goldএবং asঅন্যদের মধ্যে। এগুলি সাধারণত বিন্টিলস এবং বিন্টিলস-ডেভ (ডেবিয়ান এবং বন্ধু) বা বিন্টিলস-ডেভেল (ফেডোরা / আরএইচইএল) নামে একটি প্যাকেজে আসে । আপনি -Vএর সংস্করণ নম্বর পেতে একটি স্যুইচ দিয়ে উপরে উল্লিখিত প্রোগ্রামগুলি চালাতে পারেন run আপনি readelfতাদের নির্ভরতা তালিকাবদ্ধ করতে ব্যবহার করতে পারেন । ldতাদের প্রকারগুলি অন্তর্ভুক্ত করে নির্ভরতাগুলি তালিকাভুক্ত করতে :

readelf -d `which ld`

Dynamic section at offset 0xc900c contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libbfd-2.22-system.so]
 0x00000001 (NEEDED)                     Shared library: [libz.so.1]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

আমি জিসিসির অভ্যন্তরীণ কাজের সাথে খুব বেশি পরিচিত নই, তবে আমি বলব যে জিসিসি কখনও বিএফডি-র বিরুদ্ধে লিঙ্কযুক্ত তা ভেবে অদ্ভুত লাগে।


ভাল, আপনি বলতে ldBFD ব্যবহার করে, কিন্তু নয়, ldঅংশ gccঅর্থে যে gcc foobar.o -o foobarহয়ld
user322908

gccldসংযোগের জন্য ব্যবহার করে , হ্যাঁ। তবে এটি gccবিএফডি (আপনি আপনার পোস্টে যা লিখেছেন) এর বিপরীতে যুক্ত হওয়ার চেয়ে আলাদা from
লার্সেন্ড

সঠিক। আমি স্পষ্টভাবে জানতে চেয়েছিলাম BFD এর কোন সংস্করণটি আমার gccবিপরীতে লিঙ্কযুক্ত। আপনি বলে ldযাচ্ছিলেন বলে মনে হয়েছিল, এটি বিএফডির সাথে যুক্ত, তবে gccতা নয়। এটি কীভাবে হতে পারে, যখন gccবাস্তবে ব্যবহার হয় ld
ব্যবহারকারী322908

@ ইউজার ৩২২৯০৮: কারণ gccএটি নয় ld, কারণ gccবিএফডি সরবরাহিত কোনও কার্যের প্রয়োজন নেই। আপনি আসল প্রশ্ন থেকে বিপথে চলেছেন।
লার্সেন্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.