এটি হল aarch64-linux-gnu-ld.bfd কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
ld - GNU লিঙ্কার
সাইনোপিসিস
ld [অপশন] বস্তু ফাইল ...
বর্ণনাঃ
ld অনেকগুলি অবজেক্ট এবং আর্কাইভ ফাইলকে একত্রিত করে, তাদের ডেটা স্থানান্তরিত করে এবং প্রতীক টাই আপ করে
তথ্যসূত্র সাধারণত একটি প্রোগ্রাম কম্পাইল করার শেষ ধাপ রান করা হয় ld.
ld AT&T-এর লিঙ্ক এডিটরের একটি সুপারসেটে লেখা লিঙ্কার কমান্ড ল্যাঙ্গুয়েজ ফাইল গ্রহণ করে
কমান্ড ভাষা সিনট্যাক্স, লিঙ্কিং প্রক্রিয়ার উপর সুস্পষ্ট এবং সম্পূর্ণ নিয়ন্ত্রণ প্রদান করতে।
এই ম্যান পৃষ্ঠাটি কমান্ডের ভাষা বর্ণনা করে না; দেখুন ld সম্পূর্ণ জন্য "তথ্য" এ প্রবেশ করুন
কমান্ড ভাষা এবং GNU লিঙ্কারের অন্যান্য দিক সম্পর্কে বিশদ বিবরণ।
এর এই সংস্করণ ld অবজেক্ট ফাইলে কাজ করার জন্য সাধারণ উদ্দেশ্য BFD লাইব্রেরি ব্যবহার করে। এই
অনুমতি ld বিভিন্ন ফরম্যাটে অবজেক্ট ফাইল পড়তে, একত্রিত করতে এবং লিখতে----এর জন্য
উদাহরণ, COFF বা "a.out"। বিভিন্ন ফরম্যাট একসাথে সংযুক্ত করা হতে পারে কোনো উত্পাদন
উপলব্ধ ধরনের অবজেক্ট ফাইল।
এর নমনীয়তা ছাড়াও, GNU লিঙ্কার প্রদানের ক্ষেত্রে অন্যান্য লিঙ্কারদের তুলনায় বেশি সহায়ক
ডায়গনিস্টিক তথ্য। অনেক লিঙ্কার একটি সম্মুখীন হওয়ার সাথে সাথে মৃত্যুদন্ড পরিত্যাগ করে
ত্রুটি; যখন সম্ভব, ld কার্যকর করা চালিয়ে যাচ্ছে, আপনাকে অন্যান্য ত্রুটি সনাক্ত করার অনুমতি দেয়
(বা, কিছু ক্ষেত্রে, ত্রুটি থাকা সত্ত্বেও একটি আউটপুট ফাইল পেতে)।
GNU লিঙ্কার ld পরিস্থিতির একটি বিস্তৃত পরিসর কভার করার জন্য বোঝানো হয়, এবং সামঞ্জস্যপূর্ণ হতে
অন্যান্য লিঙ্কারের সাথে যতটা সম্ভব। ফলস্বরূপ, এটি নিয়ন্ত্রণ করার জন্য আপনার কাছে অনেক পছন্দ রয়েছে
আচরণ।
বিকল্প
লিঙ্কার কমান্ড-লাইন বিকল্পের আধিক্য সমর্থন করে, কিন্তু বাস্তবে তাদের মধ্যে কয়েকটি
কোনো বিশেষ প্রসঙ্গে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি ঘন ঘন ব্যবহার ld লিঙ্ক করতে হয়
স্ট্যান্ডার্ড ইউনিক্স অবজেক্ট ফাইল একটি স্ট্যান্ডার্ড, সমর্থিত ইউনিক্স সিস্টেমে। যেমন একটি সিস্টেমের উপর, থেকে
একটি ফাইল "hello.o" লিঙ্ক করুন:
আমি করি /lib/crt0.o hello.o -lc
এই বলে ld নামে একটি ফাইল তৈরি করতে আউটপুট ফাইল লিঙ্ক করার ফলে
"hello.o" সহ "/lib/crt0.o" এবং লাইব্রেরি "libc.a", যা স্ট্যান্ডার্ড থেকে আসবে
অনুসন্ধান ডিরেক্টরি (এর আলোচনা দেখুন -l নীচের বিকল্প।)
কিছু কমান্ড-লাইন বিকল্প ld কমান্ড লাইনের যেকোনো স্থানে নির্দিষ্ট করা যেতে পারে।
যাইহোক, বিকল্পগুলি যা ফাইলগুলিকে উল্লেখ করে, যেমন -l or -T, ফাইল পড়ার কারণ
যে পয়েন্টে অপশনটি কমান্ড লাইনে উপস্থিত হয়, অবজেক্ট ফাইলের সাথে সম্পর্কিত এবং
অন্যান্য ফাইল বিকল্প। একটি ভিন্ন আর্গুমেন্ট সহ নন-ফাইল বিকল্পগুলি পুনরাবৃত্তি করা হয়
আর কোন প্রভাব নেই, বা পূর্বের ঘটনাগুলিকে ওভাররাইড করবেন না (কমান্ডের বাম দিকে যা
লাইন) সেই বিকল্পের। একাধিকবার অর্থপূর্ণভাবে নির্দিষ্ট করা যেতে পারে এমন বিকল্পগুলি
নিচের বর্ণনায় উল্লেখ করা হয়েছে।
অ-বিকল্প আর্গুমেন্ট হল অবজেক্ট ফাইল বা আর্কাইভ যা একসাথে লিঙ্ক করতে হবে। তারা
একটি অবজেক্ট ফাইল ব্যতীত কমান্ড-লাইন বিকল্পগুলির সাথে অনুসরণ, পূর্ববর্তী বা মিশ্রিত হতে পারে
একটি বিকল্প এবং তার যুক্তির মধ্যে যুক্তি স্থাপন করা যাবে না।
সাধারণত লিঙ্কারটি কমপক্ষে একটি অবজেক্ট ফাইলের সাথে আহ্বান করা হয়, তবে আপনি অন্যটি নির্দিষ্ট করতে পারেন
ব্যবহার করে বাইনারি ইনপুট ফাইলের ফর্ম -l, -R, এবং স্ক্রিপ্ট কমান্ড ভাষা। যদি না। বাইনারি
ইনপুট ফাইলগুলি মোটেই নির্দিষ্ট করা হয়েছে, লিঙ্কার কোনও আউটপুট তৈরি করে না এবং সমস্যাগুলি তৈরি করে না
বার্তা না ইনপুট নথি পত্র.
যদি লিঙ্কার একটি অবজেক্ট ফাইলের বিন্যাস চিনতে না পারে, তবে এটি অনুমান করবে যে এটি একটি
লিঙ্কার স্ক্রিপ্ট। এইভাবে নির্দিষ্ট করা একটি স্ক্রিপ্ট প্রধান লিঙ্কার স্ক্রিপ্টের জন্য ব্যবহৃত হয়
লিঙ্ক (হয় ডিফল্ট লিঙ্কার স্ক্রিপ্ট বা ব্যবহার করে নির্দিষ্ট করা -T)। এই
বৈশিষ্ট্য লিঙ্কারকে একটি ফাইলের সাথে লিঙ্ক করার অনুমতি দেয় যা একটি বস্তু বা একটি বলে মনে হয়
সংরক্ষণাগার, কিন্তু আসলে শুধুমাত্র কিছু প্রতীক মান সংজ্ঞায়িত করে, অথবা "INPUT" বা "GROUP" ব্যবহার করে
অন্যান্য বস্তু লোড করুন। এইভাবে একটি স্ক্রিপ্ট নির্দিষ্ট করা শুধুমাত্র প্রধান লিঙ্কারকে বৃদ্ধি করে
স্ক্রিপ্ট, প্রধান স্ক্রিপ্টের পরে রাখা অতিরিক্ত কমান্ড সহ; ব্যবহার -T প্রতিস্থাপন করার বিকল্প
ডিফল্ট লিঙ্কার স্ক্রিপ্ট সম্পূর্ণরূপে, কিন্তু "INSERT" কমান্ডের প্রভাব নোট করুন।
বিকল্পগুলির জন্য যাদের নাম একটি একক অক্ষর, বিকল্প আর্গুমেন্টগুলি অবশ্যই অনুসরণ করতে হবে
হোয়াইটস্পেস হস্তক্ষেপ ছাড়া বিকল্প চিঠি, অথবা পৃথক আর্গুমেন্ট হিসাবে দেওয়া হবে
অবিলম্বে তাদের প্রয়োজন যে বিকল্প অনুসরণ.
বিকল্পগুলির জন্য যাদের নাম একাধিক অক্ষর, হয় একটি ড্যাশ বা দুটি এর আগে হতে পারে
বিকল্প নাম; উদাহরণ স্বরূপ, - ট্রেস-চিহ্ন এবং -- ট্রেস-চিহ্ন সমতুল্য উল্লেখ্য---সেখানে
এই নিয়মের একটি ব্যতিক্রম। ছোট হাতের 'ও' দিয়ে শুরু হওয়া একাধিক অক্ষর বিকল্প
শুধুমাত্র দুটি ড্যাশ দ্বারা আগে হতে পারে. এই সঙ্গে বিভ্রান্তি কমাতে হয় -o বিকল্প তাই
উদাহরণ স্বরূপ -অম্যাজিক আউটপুট ফাইলের নাম সেট করে জাদু যেহেতু --অম্যাজিক NMAGIC সেট করে
আউটপুটে পতাকা।
একাধিক-অক্ষরের বিকল্পগুলির আর্গুমেন্টগুলিকে বিকল্পের নাম থেকে একটি দ্বারা পৃথক করা আবশ্যক
সমান চিহ্ন, অথবা বিকল্পটি অনুসরণ করে অবিলম্বে পৃথক আর্গুমেন্ট হিসাবে দেওয়া হবে
তাদের প্রয়োজন। উদাহরণ স্বরূপ, -- ট্রেস-চিহ্ন foo বিন্যাস এবং --trace-symbol=foo সমতুল্য
একাধিক-অক্ষরের বিকল্পগুলির নামের অনন্য সংক্ষিপ্ত রূপগুলি গ্রহণ করা হয়।
দ্রষ্টব্য---যদি লিঙ্কারটি পরোক্ষভাবে একটি কম্পাইলার ড্রাইভারের মাধ্যমে আহ্বান করা হয় (যেমন জিসিসি) তারপর
সমস্ত লিঙ্কার কমান্ড লাইন বিকল্পগুলি দ্বারা উপসর্গযুক্ত হওয়া উচিত -ডব্লিউএল, (বা যা উপযুক্ত
নির্দিষ্ট কম্পাইলার ড্রাইভারের জন্য) এইরকম:
gcc -Wl, -start-group foo.o bar.o -Wl,--শেষ-গ্রুপ
এটি গুরুত্বপূর্ণ, কারণ অন্যথায় কম্পাইলার ড্রাইভার প্রোগ্রামটি নিঃশব্দে ড্রপ করতে পারে
লিঙ্কার বিকল্প, একটি খারাপ লিঙ্কের ফলে। বিকল্প পাস করার সময় বিভ্রান্তিও দেখা দিতে পারে
যেটির জন্য ড্রাইভারের মাধ্যমে মান প্রয়োজন, যেমন বিকল্প এবং যুক্তির মধ্যে একটি স্থান ব্যবহার করা
একটি বিভাজক হিসাবে কাজ করে, এবং ড্রাইভারকে শুধুমাত্র লিঙ্কার এবং এর বিকল্পটি পাস করার কারণ করে
কম্পাইলারের যুক্তি। এই ক্ষেত্রে, উভয়ের সংযুক্ত ফর্মগুলি ব্যবহার করা সহজ
একক- এবং বহু-অক্ষর বিকল্প, যেমন:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
এখানে GNU লিঙ্কার দ্বারা গৃহীত জেনেরিক কমান্ড লাইন সুইচগুলির একটি টেবিল রয়েছে:
@ফাইল
থেকে কমান্ড লাইন বিকল্প পড়ুন ফাইল. পঠিত বিকল্পগুলি এর জায়গায় সন্নিবেশ করা হয়েছে
আসল @ফাইল বিকল্প। যদি ফাইল বিদ্যমান নেই, বা পড়া যাবে না, তারপর বিকল্প
আক্ষরিকভাবে চিকিত্সা করা হবে, এবং অপসারণ করা হবে না।
বিকল্পগুলি ফাইল হোয়াইটস্পেস দ্বারা পৃথক করা হয়। একটি সাদা স্থান অক্ষর অন্তর্ভুক্ত করা যেতে পারে
একক বা ডবল উদ্ধৃতিতে সমগ্র বিকল্পটিকে ঘিরে একটি বিকল্পে। যে কোন
অক্ষরটি (একটি ব্যাকস্ল্যাশ সহ) অক্ষরটির উপসর্গ দিয়ে অন্তর্ভুক্ত করা যেতে পারে
ব্যাকস্ল্যাশ সহ অন্তর্ভুক্ত। দ্য ফাইল নিজেই অতিরিক্ত @ থাকতে পারেফাইল বিকল্প; যেকোনো
এই ধরনের বিকল্পগুলি পুনরাবৃত্তিমূলকভাবে প্রক্রিয়া করা হবে।
-a শব্দ
এই বিকল্পটি HP/UX সামঞ্জস্যের জন্য সমর্থিত। দ্য শব্দ যুক্তি একটি হতে হবে
স্ট্রিং সংরক্ষণাগার, ভাগ, বা ডিফল্ট. -আর্কাইভ কার্যকরীভাবে এর সমতুল্য
-বস্ট্যাটিক, এবং অন্য দুটি কীওয়ার্ড কার্যকরীভাবে এর সমতুল্য -বিডাইনামিক. এই
অপশন যে কোন সময় ব্যবহার করা যেতে পারে।
-- নিরীক্ষা অডিটলিব
যোগ করে অডিটলিব ডায়নামিক বিভাগের "DT_AUDIT" এন্ট্রিতে। অডিটলিব চেক করা হয় না
অস্তিত্বের জন্য, বা এটি লাইব্রেরিতে নির্দিষ্ট করা DT_SONAME ব্যবহার করবে না। যদি নির্দিষ্ট করা হয়
একাধিক বার "DT_AUDIT"-এ অডিট ইন্টারফেসের একটি কোলন বিভক্ত তালিকা থাকবে
ব্যবহার শেয়ার করা অনুসন্ধান করার সময় লিঙ্কার যদি একটি অডিট এন্ট্রি সহ একটি বস্তু খুঁজে পায়
লাইব্রেরি, এটি আউটপুট ফাইলে একটি সংশ্লিষ্ট "DT_DEPAUDIT" এন্ট্রি যোগ করবে। এই
বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মে অর্থবহ যা rtld-অডিট ইন্টারফেস সমর্থন করে।
-A স্থাপত্য
--স্থাপত্য =স্থাপত্য
বর্তমান রিলিজে ld, এই বিকল্পটি শুধুমাত্র Intel 960 পরিবারের জন্য উপযোগী
স্থাপত্য তার মধ্যে ld কনফিগারেশন, স্থাপত্য যুক্তি চিহ্নিত করে
960 পরিবারের বিশেষ স্থাপত্য, কিছু সুরক্ষা সক্ষম করে এবং পরিবর্তন করে
সংরক্ষণাগার-লাইব্রেরি অনুসন্ধান পথ।
এর ভবিষ্যত রিলিজ ld অন্যান্য আর্কিটেকচারের জন্য অনুরূপ কার্যকারিতা সমর্থন করতে পারে
পরিবারের।
-b ছক পূরণ করা
--ফরম্যাট=ছক পূরণ করা
ld একাধিক ধরনের অবজেক্ট ফাইল সমর্থন করার জন্য কনফিগার করা যেতে পারে। যদি তোমার ld is
এই ভাবে কনফিগার করা, আপনি ব্যবহার করতে পারেন -b ইনপুটের জন্য বাইনারি বিন্যাস নির্দিষ্ট করার বিকল্প
অবজেক্ট ফাইল যা কমান্ড লাইনে এই বিকল্পটি অনুসরণ করে। এমনকি যখন ld কনফিগার করা হয়
বিকল্প অবজেক্ট ফরম্যাট সমর্থন করার জন্য, আপনাকে সাধারণত এটি নির্দিষ্ট করতে হবে না, যেমন ld
ডিফল্ট ইনপুট বিন্যাস প্রতিটিতে সবচেয়ে সাধারণ বিন্যাস হিসাবে আশা করার জন্য কনফিগার করা উচিত
মেশিন। ছক পূরণ করা একটি পাঠ্য স্ট্রিং, এটি দ্বারা সমর্থিত একটি নির্দিষ্ট বিন্যাসের নাম
BFD লাইব্রেরি। (আপনি উপলব্ধ বাইনারি ফরম্যাটের সাথে তালিকা করতে পারেন objdump -i.)
আপনি এই বিকল্পটি ব্যবহার করতে চাইতে পারেন যদি আপনি একটি অস্বাভাবিক বাইনারি দিয়ে ফাইল লিঙ্ক করছেন
বিন্যাস আপনিও ব্যবহার করতে পারেন -b স্পষ্টভাবে বিন্যাস পরিবর্তন করতে (অবজেক্ট ফাইল লিঙ্ক করার সময়
বিভিন্ন বিন্যাসের), অন্তর্ভুক্ত করে -b ছক পূরণ করা অবজেক্ট ফাইলের প্রতিটি গ্রুপের আগে
একটি নির্দিষ্ট বিন্যাসে।
ডিফল্ট বিন্যাস পরিবেশ পরিবর্তনশীল "GNUTARGET" থেকে নেওয়া হয়েছে।
আপনি "TARGET" কমান্ড ব্যবহার করে একটি স্ক্রিপ্ট থেকে ইনপুট বিন্যাসও সংজ্ঞায়িত করতে পারেন;
-c এমআরআই-কমান্ডফাইল
--mri-script=এমআরআই-কমান্ডফাইল
এমআরআই দ্বারা উত্পাদিত লিঙ্কারগুলির সাথে সামঞ্জস্যের জন্য, ld একটি এ লেখা স্ক্রিপ্ট ফাইল গ্রহণ করে
MRI সামঞ্জস্যপূর্ণ স্ক্রিপ্ট ফাইলে বর্ণিত বিকল্প, সীমাবদ্ধ কমান্ড ভাষা
GNU ld ডকুমেন্টেশনের বিভাগ। বিকল্পের সাথে এমআরআই স্ক্রিপ্ট ফাইলগুলি প্রবর্তন করুন -c; ব্যবহার
দ্য -T সাধারণ-উদ্দেশ্যে লেখা লিঙ্কার স্ক্রিপ্ট চালানোর বিকল্প ld স্ক্রিপ্টিং
ভাষা. যদি এমআরআই-সিএমডিফাইল এটির অস্তিত্ব নেই, ld নির্দিষ্ট ডিরেক্টরিতে এটি সন্ধান করে
যে কোনও দ্বারা -L অপশন।
-d
-ডিসি
-ডিপি এই তিনটি বিকল্প সমতুল্য; একাধিক ফর্ম সামঞ্জস্যের জন্য সমর্থিত
অন্যান্য লিঙ্কারদের সাথে। একটি স্থানান্তরযোগ্য আউটপুট হলেও তারা সাধারণ প্রতীকগুলিতে স্থান নির্ধারণ করে
ফাইল নির্দিষ্ট করা হয়েছে (সহ -r) স্ক্রিপ্ট কমান্ড "FORCE_COMMON_ALLOCATION" এর আছে
একই প্রভাব।
-- depaudit অডিটলিব
-P অডিটলিব
যোগ করে অডিটলিব ডায়নামিক বিভাগের "DT_DEPAUDIT" এন্ট্রিতে। অডিটলিব এটি না
অস্তিত্বের জন্য পরীক্ষা করা হয়েছে, বা এটি লাইব্রেরিতে নির্দিষ্ট করা DT_SONAME ব্যবহার করবে না। যদি
একাধিকবার নির্দিষ্ট করা হয়েছে "DT_DEPAUDIT"-এ অডিটের একটি কোলন আলাদা করা তালিকা থাকবে
ব্যবহার করার জন্য ইন্টারফেস। এই বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মগুলিতে অর্থবহ
rtld-অডিট ইন্টারফেস। -P বিকল্পটি সোলারিস সামঞ্জস্যের জন্য প্রদান করা হয়েছে।
-e প্রবেশ
--প্রবেশ=প্রবেশ
ব্যবহার প্রবেশ আপনার প্রোগ্রামের নির্বাহ শুরু করার জন্য স্পষ্ট প্রতীক হিসাবে, পরিবর্তে
ডিফল্ট এন্ট্রি পয়েন্ট। নাম না থাকলে কোন প্রতীক প্রবেশ, লিঙ্কার চেষ্টা করবে
পার্স প্রবেশ একটি সংখ্যা হিসাবে, এবং প্রবেশ ঠিকানা হিসাবে এটি ব্যবহার করুন (সংখ্যা হবে
বেস 10 এ ব্যাখ্যা করা হয়েছে; আপনি একটি নেতৃস্থানীয় ব্যবহার করতে পারেন 0x বেস 16, বা একটি নেতৃস্থানীয় জন্য 0 ভিত্তির জন্য
8).
-- বাদ-libs liberal এর সংক্ষিপ্ত রূপ,liberal এর সংক্ষিপ্ত রূপ...
সংরক্ষণাগার লাইব্রেরির একটি তালিকা নির্দিষ্ট করে যেখান থেকে প্রতীক স্বয়ংক্রিয়ভাবে হওয়া উচিত নয়
রপ্তানি লাইব্রেরির নাম কমা বা কোলন দ্বারা সীমাবদ্ধ করা যেতে পারে। নির্দিষ্ট করা
"--exclude-libs ALL" স্বয়ংক্রিয় রপ্তানি থেকে সমস্ত সংরক্ষণাগার লাইব্রেরিতে প্রতীক বাদ দেয়।
এই বিকল্পটি শুধুমাত্র লিঙ্কারের i386 PE টার্গেটেড পোর্ট এবং ELF-এর জন্য উপলব্ধ
টার্গেটেড পোর্ট। i386 PE-এর জন্য, একটি .def ফাইলে স্পষ্টভাবে তালিকাভুক্ত চিহ্নগুলি এখনও রয়েছে৷
রপ্তানি, এই বিকল্প নির্বিশেষে. ELF টার্গেটেড পোর্টের জন্য, এর দ্বারা প্রভাবিত চিহ্ন
বিকল্পটি লুকানো হিসাবে বিবেচিত হবে।
বাদ-মডিউল-এর জন্য-ইমপ্লিব মডিউল,মডিউল...
অবজেক্ট ফাইল বা আর্কাইভ সদস্যদের একটি তালিকা নির্দিষ্ট করে, যেখান থেকে চিহ্ন থাকা উচিত নয়
স্বয়ংক্রিয়ভাবে রপ্তানি, কিন্তু যা আমদানি লাইব্রেরিতে পাইকারি কপি করা উচিত
লিঙ্কের সময় তৈরি করা হচ্ছে। মডিউল নামগুলি কমা দ্বারা বা সীমাবদ্ধ করা যেতে পারে
কোলন, এবং ব্যবহার করা ফাইলের নামের সাথে হুবহু মেলে ld ফাইল খুলতে; সংরক্ষণাগার জন্য
সদস্য, এটি কেবল সদস্যের নাম, তবে অবজেক্ট ফাইলগুলির জন্য তালিকাভুক্ত নাম আবশ্যক
লিঙ্কারের ইনপুট ফাইল নির্দিষ্ট করতে ব্যবহৃত যেকোন পাথ অন্তর্ভুক্ত করুন এবং সঠিকভাবে মেলে
কমান্ড লাইন এই বিকল্পটি শুধুমাত্র i386 PE টার্গেটেড পোর্টের জন্য উপলব্ধ
লিঙ্কার একটি .def ফাইলে স্পষ্টভাবে তালিকাভুক্ত প্রতীকগুলি এখনও রপ্তানি করা হয়, নির্বিশেষে
এই বিকল্প।
-E
--রপ্তানি-গতিশীল
--নো-রপ্তানি-গতিশীল
একটি গতিশীলভাবে সংযুক্ত এক্সিকিউটেবল তৈরি করার সময়, ব্যবহার করে -E বিকল্প বা
--রপ্তানি-গতিশীল বিকল্পটি লিঙ্কারকে গতিশীল প্রতীকে সমস্ত চিহ্ন যোগ করতে দেয়
টেবিল ডায়নামিক সিম্বল টেবিল হল চিহ্নের সেট যা ডাইনামিক থেকে দৃশ্যমান
রান টাইমে বস্তু।
আপনি যদি এই বিকল্পগুলির একটি ব্যবহার না করেন (বা ব্যবহার করুন --নো-রপ্তানি-গতিশীল বিকল্প
ডিফল্ট আচরণ পুনরুদ্ধার করুন), গতিশীল প্রতীক টেবিলে সাধারণত শুধুমাত্র থাকবে
যে চিহ্নগুলি লিঙ্কে উল্লিখিত কিছু গতিশীল বস্তু দ্বারা উল্লেখ করা হয়।
আপনি যদি একটি গতিশীল বস্তু লোড করতে "dlopen" ব্যবহার করেন যা প্রতীকগুলিতে ফিরে যেতে হবে
প্রোগ্রাম দ্বারা সংজ্ঞায়িত, বরং অন্য কিছু গতিশীল বস্তুর চেয়ে, তারপর আপনি সম্ভবত হবে
প্রোগ্রামটি লিঙ্ক করার সময় এই বিকল্পটি ব্যবহার করতে হবে।
এছাড়াও আপনি কি চিহ্ন যোগ করা উচিত নিয়ন্ত্রণ করতে গতিশীল তালিকা ব্যবহার করতে পারেন
গতিশীল প্রতীক টেবিল যদি আউটপুট বিন্যাস এটি সমর্থন করে। এর বর্ণনা দেখুন
--ডাইনামিক-তালিকা.
মনে রাখবেন এই বিকল্পটি ELF টার্গেটেড পোর্টের জন্য নির্দিষ্ট। পিই লক্ষ্যগুলি অনুরূপ সমর্থন করে
একটি DLL বা EXE থেকে সমস্ত প্রতীক এক্সপোর্ট করার ফাংশন; এর বর্ণনা দেখুন
--রপ্তানি-সমস্ত-প্রতীক নিচে.
-ইবি বড়-এন্ডিয়ান অবজেক্ট লিঙ্ক করুন। এটি ডিফল্ট আউটপুট বিন্যাসকে প্রভাবিত করে।
-ইএল লিটল-এন্ডিয়ান অবজেক্ট লিঙ্ক করুন। এটি ডিফল্ট আউটপুট বিন্যাসকে প্রভাবিত করে।
-f নাম
--সহায়ক=নাম
একটি ELF শেয়ার্ড অবজেক্ট তৈরি করার সময়, অভ্যন্তরীণ DT_AUXILIARY ক্ষেত্রটি এতে সেট করুন
নির্দিষ্ট নাম। এটি ডাইনামিক লিঙ্কারকে বলে যে শেয়ার করা প্রতীক টেবিল
অবজেক্ট শেয়ার করা অবজেক্টের প্রতীক টেবিলে একটি সহায়ক ফিল্টার হিসাবে ব্যবহার করা উচিত
নাম.
যদি আপনি পরে এই ফিল্টার অবজেক্টের বিরুদ্ধে একটি প্রোগ্রাম লিঙ্ক করেন, তাহলে, আপনি যখন চালান
প্রোগ্রাম, ডায়নামিক লিঙ্কার DT_AUXILIARY ক্ষেত্রটি দেখতে পাবে। ডায়নামিক লিঙ্কার হলে
ফিল্টার অবজেক্ট থেকে যেকোন চিহ্নের সমাধান করে, এটি প্রথমে চেক করবে a আছে কিনা
ভাগ করা বস্তুর মধ্যে সংজ্ঞা নাম. যদি একটি থাকে তবে এটি এর পরিবর্তে ব্যবহার করা হবে
ফিল্টার অবজেক্টে সংজ্ঞা। ভাগ করা বস্তু নাম প্রয়োজন নেই সুতরাং
ভাগ করা বস্তু নাম নির্দিষ্ট একটি বিকল্প বাস্তবায়ন প্রদান করতে ব্যবহার করা যেতে পারে
ফাংশন, সম্ভবত ডিবাগিং বা মেশিন নির্দিষ্ট কর্মক্ষমতা জন্য.
এই বিকল্পটি একাধিকবার উল্লেখ করা যেতে পারে। DT_AUXILIARY এন্ট্রি তৈরি করা হবে
যে ক্রমে তারা কমান্ড লাইনে উপস্থিত হয়।
-F নাম
--ফিল্টার=নাম
একটি ELF শেয়ার্ড অবজেক্ট তৈরি করার সময়, অভ্যন্তরীণ DT_FILTER ফিল্ডটি নির্দিষ্ট করে সেট করুন
নাম এটি ডাইনামিক লিঙ্কারকে বলে যে শেয়ার করা বস্তুর প্রতীক টেবিল যা
তৈরি করা হচ্ছে শেয়ার করা অবজেক্টের প্রতীক টেবিলে ফিল্টার হিসেবে ব্যবহার করা উচিত
নাম.
যদি আপনি পরে এই ফিল্টার অবজেক্টের বিরুদ্ধে একটি প্রোগ্রাম লিঙ্ক করেন, তাহলে, আপনি যখন চালান
প্রোগ্রাম, ডায়নামিক লিঙ্কার DT_FILTER ক্ষেত্রটি দেখতে পাবে। ডাইনামিক লিঙ্কার হবে
যথারীতি ফিল্টার অবজেক্টের প্রতীক টেবিল অনুসারে প্রতীকগুলি সমাধান করুন, তবে এটি
আসলে ভাগ করা অবজেক্টে পাওয়া সংজ্ঞাগুলির সাথে লিঙ্ক করবে নাম। সুতরাং
ফিল্টার অবজেক্ট অবজেক্ট দ্বারা প্রদত্ত চিহ্নগুলির একটি উপসেট নির্বাচন করতে ব্যবহার করা যেতে পারে
নাম.
কিছু পুরানো লিঙ্কার ব্যবহার করে -F জন্য একটি সংকলন টুলচেইন জুড়ে বিকল্প
ইনপুট এবং আউটপুট অবজেক্ট ফাইল উভয়ের জন্য অবজেক্ট-ফাইল বিন্যাস নির্দিষ্ট করা। GNU লিঙ্কার
এই উদ্দেশ্যে অন্যান্য প্রক্রিয়া ব্যবহার করে: -b, --ফরম্যাট, --ফরম্যাট বিকল্প,
লিঙ্কার স্ক্রিপ্টে "টার্গেট" কমান্ড এবং "GNUTARGET" পরিবেশ পরিবর্তনশীল। জিএনইউ
লিঙ্কার উপেক্ষা করবে -F একটি ELF ভাগ করা বস্তু তৈরি না করার সময় বিকল্প।
-ফিনি=নাম
একটি ELF এক্সিকিউটেবল বা শেয়ার করা অবজেক্ট তৈরি করার সময়, এক্সিকিউটেবল হলে NAME কে কল করুন বা
শেয়ার্ড অবজেক্ট আনলোড করা হয়, ফাংশনের ঠিকানায় DT_FINI সেট করে। দ্বারা
ডিফল্ট, লিঙ্কার কল করার ফাংশন হিসাবে "_fini" ব্যবহার করে।
-g উপেক্ষা করা হয়েছে। অন্যান্য সরঞ্জামগুলির সাথে সামঞ্জস্যের জন্য সরবরাহ করা হয়েছে।
-G মূল্য
--gpsize=মূল্য
জিপি রেজিস্টার ব্যবহার করে অপ্টিমাইজ করা বস্তুর সর্বোচ্চ আকার সেট করুন আয়তন. এই
MIPS ELF-এর মতো অবজেক্ট ফাইল ফরম্যাটের জন্যই অর্থবহ যা বড় রাখার সমর্থন করে
এবং বিভিন্ন বিভাগে ছোট বস্তু. এটি অন্যান্য অবজেক্ট ফাইলের জন্য উপেক্ষা করা হয়
ফরম্যাটের।
-h নাম
-সোনাম=নাম
একটি ELF শেয়ার্ড অবজেক্ট তৈরি করার সময়, অভ্যন্তরীণ DT_SONAME ক্ষেত্রটি নির্দিষ্ট করে সেট করুন
নাম যখন একটি এক্সিকিউটেবল একটি ভাগ করা বস্তুর সাথে লিঙ্ক করা হয় যার একটি DT_SONAME ক্ষেত্র রয়েছে,
তারপর যখন এক্সিকিউটেবল চালানো হয় তখন ডাইনামিক লিঙ্কার শেয়ার করা লোড করার চেষ্টা করবে
প্রদত্ত ফাইলের নাম ব্যবহার করার পরিবর্তে DT_SONAME ক্ষেত্রের দ্বারা নির্দিষ্ট করা বস্তু
লিঙ্কার
-i একটি বর্ধিত লিঙ্ক সম্পাদন করুন (বিকল্প হিসাবে একই -r).
-init=নাম
একটি ELF এক্সিকিউটেবল বা শেয়ার করা অবজেক্ট তৈরি করার সময়, এক্সিকিউটেবল হলে NAME কে কল করুন বা
ভাগ করা বস্তু লোড করা হয়, ফাংশনের ঠিকানায় DT_INIT সেট করে। দ্বারা
ডিফল্ট, লিঙ্কার কল করার ফাংশন হিসাবে "_init" ব্যবহার করে।
-l namespec
--লাইব্রেরি=namespec
দ্বারা নির্দিষ্ট আর্কাইভ বা অবজেক্ট ফাইল যোগ করুন namespec লিঙ্ক করার জন্য ফাইলের তালিকায়।
এই বিকল্পটি যে কোনো সংখ্যক বার ব্যবহার করা যেতে পারে। যদি namespec ফর্মের হয় : ফাইলের নাম, ld
নামক একটি ফাইলের জন্য লাইব্রেরি পাথ অনুসন্ধান করবে ফাইলের নাম, অন্যথায় এটি অনুসন্ধান করবে
নামের একটি ফাইলের জন্য লাইব্রেরি পাথ libnamespec.a.
শেয়ার্ড লাইব্রেরি সমর্থন করে এমন সিস্টেমে, ld এছাড়াও অন্য ফাইল অনুসন্ধান করতে পারে
libnamespec.a. বিশেষ করে, ELF এবং SunOS সিস্টেমে, ld জন্য একটি ডিরেক্টরি অনুসন্ধান করবে
একটি লাইব্রেরি বলা হয় libnamespec.so একটি কল অনুসন্ধান করার আগে libnamespec.a. (দ্বারা
কনভেনশন, একটি ".so" এক্সটেনশন একটি শেয়ার্ড লাইব্রেরি নির্দেশ করে।) নোট করুন যে এই আচরণ
প্রয়োগ হয় না : ফাইলের নাম, যা সবসময় নামক একটি ফাইল নির্দিষ্ট করে ফাইলের নাম.
লিঙ্কার শুধুমাত্র একবার একটি সংরক্ষণাগার অনুসন্ধান করবে, যেখানে এটি নির্দিষ্ট করা আছে সেখানে
কমান্ড লাইন। যদি সংরক্ষণাগার একটি চিহ্ন সংজ্ঞায়িত করে যা কিছু বস্তুতে অনির্ধারিত ছিল
যা কমান্ড লাইনে আর্কাইভের আগে উপস্থিত হবে, লিঙ্কারটি অন্তর্ভুক্ত করবে
আর্কাইভ থেকে উপযুক্ত ফাইল(গুলি)। যাইহোক, একটি বস্তুর মধ্যে একটি অনির্ধারিত প্রতীক
কমান্ড লাইনে পরে উপস্থিত হওয়ার ফলে লিঙ্কার সংরক্ষণাগার অনুসন্ধান করতে পারে না
আবার.
দেখ -( লিঙ্কারকে একাধিকবার সংরক্ষণাগার অনুসন্ধান করতে বাধ্য করার উপায়ের বিকল্প।
আপনি কমান্ড লাইনে একই সংরক্ষণাগার একাধিকবার তালিকাভুক্ত করতে পারেন।
এই ধরনের সংরক্ষণাগার অনুসন্ধান ইউনিক্স লিঙ্কারদের জন্য আদর্শ। যাইহোক, আপনি যদি
ব্যবহার ld AIX-এ, মনে রাখবেন যে এটি AIX লিঙ্কারের আচরণ থেকে আলাদা।
-L searchdir
--লাইব্রেরি-পাথ=searchdir
পথ যোগ করুন searchdir পাথ যে তালিকা ld সংরক্ষণাগার লাইব্রেরি অনুসন্ধান করবে এবং
ld নিয়ন্ত্রণ স্ক্রিপ্ট। আপনি এই বিকল্পটি যে কোনো সংখ্যক বার ব্যবহার করতে পারেন। ডিরেক্টরি হল
কমান্ড লাইনে যে ক্রমে সেগুলি নির্দিষ্ট করা হয়েছে সেই ক্রমে অনুসন্ধান করা হয়েছে। ডিরেক্টরি
কমান্ড লাইনে নির্দিষ্ট করা ডিফল্ট ডিরেক্টরির আগে অনুসন্ধান করা হয়। সব -L
বিকল্প সকলের জন্য প্রযোজ্য -l অপশন, অপশনগুলি যে ক্রমে প্রদর্শিত হয় তা নির্বিশেষে।
-L বিকল্পগুলি কীভাবে প্রভাবিত করে না ld একটি লিঙ্কার স্ক্রিপ্ট জন্য অনুসন্ধান যদি না -T বিকল্প হয়
নির্দিষ্ট
If searchdir "=" দিয়ে শুরু হয়, তারপর "=" দিয়ে প্রতিস্থাপিত হবে sysroot উপসর্গ,
দ্বারা নিয়ন্ত্রিত --sysroot বিকল্প, বা লিঙ্কার কনফিগার করা হলে নির্দিষ্ট করা হয়।
অনুসন্ধান করা পথের ডিফল্ট সেট (এর সাথে নির্দিষ্ট করা ছাড়াই -L) যার উপর নির্ভর করে
এমুলেশন মোড ld ব্যবহার করছে, এবং কিছু ক্ষেত্রে এটি কীভাবে কনফিগার করা হয়েছিল তাও।
"SEARCH_DIR" কমান্ড সহ একটি লিঙ্ক স্ক্রিপ্টে পাথগুলিও নির্দিষ্ট করা যেতে পারে।
এইভাবে নির্দিষ্ট করা ডিরেক্টরিগুলি লিঙ্কার স্ক্রিপ্টের বিন্দুতে অনুসন্ধান করা হয়
কমান্ড লাইনে প্রদর্শিত হবে।
-m অনুকরণ
অনুকরণ করুন অনুকরণ লিঙ্কার আপনি এর সাথে উপলব্ধ অনুকরণগুলি তালিকাভুক্ত করতে পারেন
-- ভারবোস or -V অপশন।
যদি -m বিকল্পটি ব্যবহার করা হয় না, অনুকরণটি "LDEMULATION" থেকে নেওয়া হয়েছে
পরিবেশ পরিবর্তনশীল, যদি এটি সংজ্ঞায়িত করা হয়।
অন্যথায়, ডিফল্ট এমুলেশন নির্ভর করে কিভাবে লিঙ্কার কনফিগার করা হয়েছে তার উপর।
-M
--প্রিন্ট-মানচিত্র
স্ট্যান্ডার্ড আউটপুটে একটি লিঙ্ক মানচিত্র প্রিন্ট করুন। একটি লিঙ্ক মানচিত্র সম্পর্কে তথ্য প্রদান করে
লিঙ্ক, নিম্নলিখিত সহ:
যেখানে অবজেক্ট ফাইল মেমরিতে ম্যাপ করা হয়।
· কিভাবে সাধারণ প্রতীক বরাদ্দ করা হয়।
· সমস্ত আর্কাইভ সদস্য লিঙ্কে অন্তর্ভুক্ত, প্রতীকের উল্লেখ সহ যা
আর্কাইভ সদস্য আনার কারণ.
· প্রতীকের জন্য নির্ধারিত মান।
দ্রষ্টব্য - যে চিহ্নগুলির মানগুলি একটি অভিব্যক্তি দ্বারা গণনা করা হয় যার মধ্যে a রয়েছে
একই চিহ্নের পূর্ববর্তী মানের রেফারেন্স সঠিক ফলাফল নাও থাকতে পারে
লিঙ্ক মানচিত্রে প্রদর্শিত। এটি কারণ লিঙ্কার মধ্যবর্তী বাতিল করে দেয়
ফলাফল এবং শুধুমাত্র একটি অভিব্যক্তির চূড়ান্ত মান ধরে রাখে। যেমন অধীনে
পরিস্থিতিতে লিঙ্কার বর্গাকার বন্ধনী দ্বারা আবদ্ধ চূড়ান্ত মান প্রদর্শন করবে।
এইভাবে উদাহরণস্বরূপ একটি লিঙ্কার স্ক্রিপ্ট ধারণকারী:
foo = 1
foo = foo * 4
foo = foo + 8
লিঙ্ক মানচিত্রে নিম্নলিখিত আউটপুট উত্পাদন করবে যদি -M বিকল্প ব্যবহার করা হয়:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
দেখ এক্সপ্রেশন লিঙ্কার স্ক্রিপ্টে অভিব্যক্তি সম্পর্কে আরও তথ্যের জন্য।
-n
--জাদু
বিভাগগুলির পৃষ্ঠা প্রান্তিককরণ বন্ধ করুন এবং ভাগ করা লাইব্রেরির সাথে লিঙ্ক করা অক্ষম করুন৷ যদি
আউটপুট ফরম্যাট ইউনিক্স স্টাইলের ম্যাজিক নম্বর সমর্থন করে, আউটপুটটিকে "NMAGIC" হিসাবে চিহ্নিত করুন।
-N
--অম্যাজিক
পাঠ্য এবং ডেটা বিভাগগুলি পাঠযোগ্য এবং লেখার যোগ্য হিসাবে সেট করুন। এছাড়াও, পৃষ্ঠা-সারিবদ্ধ করবেন না
ডেটা সেগমেন্ট, এবং শেয়ার্ড লাইব্রেরির সাথে লিঙ্ক করা অক্ষম করুন। আউটপুট ফরম্যাট হলে
ইউনিক্স স্টাইলের ম্যাজিক নম্বর সমর্থন করে, আউটপুটটিকে "OMAGIC" হিসাবে চিহ্নিত করুন। দ্রষ্টব্য: যদিও ক
PE-COFF লক্ষ্যগুলির জন্য লিখনযোগ্য পাঠ্য বিভাগ অনুমোদিত, এটির সাথে সামঞ্জস্যপূর্ণ নয়
মাইক্রোসফ্ট দ্বারা প্রকাশিত ফর্ম্যাট স্পেসিফিকেশন।
--নো-অম্যাজিক
এই বিকল্পটি এর বেশিরভাগ প্রভাবকে অস্বীকার করে -N বিকল্প এটি পাঠ্য বিভাগকে সেট করে
শুধুমাত্র পঠনযোগ্য, এবং ডেটা সেগমেন্টকে পৃষ্ঠা-সারিবদ্ধ হতে বাধ্য করে। দ্রষ্টব্য - এই বিকল্পটি করে
শেয়ার্ড লাইব্রেরির বিরুদ্ধে লিঙ্কিং সক্ষম করবেন না। ব্যবহার করুন -বিডাইনামিক এই জন্য।
-o আউটপুট
--আউটপুট=আউটপুট
ব্যবহার আউটপুট দ্বারা উত্পাদিত প্রোগ্রামের নাম হিসাবে ld; যদি এই বিকল্পটি না হয়
নির্দিষ্ট, নাম a. আউট ডিফল্টরূপে ব্যবহৃত হয়। স্ক্রিপ্ট কমান্ড "OUTPUT" এছাড়াও করতে পারেন
আউটপুট ফাইলের নাম উল্লেখ করুন।
-O স্তর
If স্তর শূন্যের চেয়ে বড় একটি সংখ্যাসূচক মান ld আউটপুট অপ্টিমাইজ করে। এই হতে পারে
উল্লেখযোগ্যভাবে বেশি সময় নেয় এবং তাই সম্ভবত শুধুমাত্র ফাইনালের জন্য সক্ষম করা উচিত
বাইনারি এই মুহূর্তে এই বিকল্পটি শুধুমাত্র ELF শেয়ার্ড লাইব্রেরি জেনারেশনকে প্রভাবিত করে৷ ভবিষ্যৎ
লিঙ্কারের রিলিজগুলি এই বিকল্পের আরও বেশি ব্যবহার করতে পারে। এছাড়াও বর্তমানে নেই
এই বিকল্পের বিভিন্ন অ-শূন্য মানের জন্য লিঙ্কারের আচরণের পার্থক্য।
আবার এটি ভবিষ্যতের রিলিজের সাথে পরিবর্তিত হতে পারে।
--ধাক্কা-রাজ্য
সার্জারির --ধাক্কা-রাজ্য পতাকাগুলির বর্তমান অবস্থা সংরক্ষণ করার অনুমতি দেয় যা পরিচালনা করে
ইনপুট ফাইল হ্যান্ডলিং যাতে তারা সব একটি সংশ্লিষ্ট সঙ্গে পুনরুদ্ধার করা যেতে পারে
--পপ-রাজ্য বিকল্প।
কভার করা বিকল্প হল: -বিডাইনামিক, -বস্ট্যাটিক, -ডিএন, -ডি, -কল_শেয়ার করা হয়েছে,
-non_shared, - স্থির, -N, -n, --পুরো আর্কাইভ, --নো-পুরো-আর্কাইভ, -r, -উর,
--কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি, --নো-কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি, --যেমন দরকার, --না-প্রয়োজনীয়,
এবং -a.
এই বিকল্পের জন্য একটি লক্ষ্যের জন্য নির্দিষ্টকরণ pkg-config. সঙ্গে ব্যবহার করা হলে
--libs বিকল্প সব সম্ভাব্য প্রয়োজনীয় লাইব্রেরি তালিকাভুক্ত করা হয় এবং তারপর সম্ভবত লিঙ্ক করা হয়
সব সময়. নিম্নলিখিত হিসাবে কিছু ফেরত দেওয়া ভাল:
-ডব্লিউএল,-পুশ-স্টেট,--প্রয়োজনে -লিবোন -লিবটো -ডব্লিউএল,-পপ-স্টেট
--push-state-এর প্রভাবকে পূর্বাবস্থায় ফিরিয়ে আনে, পতাকা পরিচালনার পূর্ববর্তী মানগুলি পুনরুদ্ধার করে
ইনপুট ফাইল হ্যান্ডলিং।
-q
--এমিট-রিলোকস
সম্পূর্ণভাবে সংযুক্ত এক্সিকিউটেবলগুলিতে স্থানান্তর বিভাগ এবং বিষয়বস্তু ছেড়ে দিন। পোস্ট লিঙ্ক
বিশ্লেষণ এবং অপ্টিমাইজেশান সরঞ্জাম সঠিক সম্পাদন করার জন্য এই তথ্য প্রয়োজন হতে পারে
এক্সিকিউটেবলের পরিবর্তন। এর ফলে বড় এক্সিকিউটেবল হয়।
এই বিকল্পটি বর্তমানে শুধুমাত্র ELF প্ল্যাটফর্মে সমর্থিত।
-- বল-গতিশীল
গতিশীল বিভাগ আছে আউটপুট ফাইল জোর করুন. এই বিকল্পটি VxWorks-এর জন্য নির্দিষ্ট
লক্ষ।
-r
-- স্থানান্তরযোগ্য
রিলোকেটেবল আউটপুট জেনারেট করুন---অর্থাৎ, একটি আউটপুট ফাইল তৈরি করুন যা ঘুরে আসতে পারে
ইনপুট ld. এটা প্রায়ই বলা হয় আংশিক লিঙ্ক. পার্শ্ব প্রতিক্রিয়া হিসাবে, পরিবেশে
যা স্ট্যান্ডার্ড ইউনিক্স ম্যাজিক নম্বর সমর্থন করে, এই বিকল্পটি আউটপুট ফাইলের সেটও করে
ম্যাজিক নম্বর থেকে "OMAGIC"। এই বিকল্পটি নির্দিষ্ট করা না থাকলে, একটি পরম ফাইল
উত্পাদিত C++ প্রোগ্রাম লিঙ্ক করার সময়, এই বিকল্প ইচ্ছা না রেফারেন্স সমাধান করুন
নির্মাণকারী; এটি করতে, ব্যবহার করুন -উর.
যখন একটি ইনপুট ফাইলের আউটপুট ফাইলের মতো একই বিন্যাস থাকে না, আংশিক লিঙ্কিং
শুধুমাত্র তখনই সমর্থিত হয় যদি সেই ইনপুট ফাইলে কোনো স্থানান্তর না থাকে। ভিন্ন
আউটপুট ফরম্যাটের আরও সীমাবদ্ধতা থাকতে পারে; উদাহরণস্বরূপ কিছু "a.out"-ভিত্তিক বিন্যাস
অন্য ফরম্যাটে ইনপুট ফাইলের সাথে আংশিক লিঙ্কিং সমর্থন করে না।
এই বিকল্পটি একই কাজ করে -i.
-R ফাইলের নাম
--শুধু-প্রতীক=ফাইলের নাম
থেকে প্রতীকের নাম এবং তাদের ঠিকানা পড়ুন ফাইলের নাম, কিন্তু এটি স্থানান্তর বা অন্তর্ভুক্ত করবেন না
এটি আউটপুটে। এটি আপনার আউটপুট ফাইলকে প্রতীকীভাবে পরম উল্লেখ করতে দেয়
অন্যান্য প্রোগ্রামে সংজ্ঞায়িত মেমরির অবস্থান। আপনি এই বিকল্পটি এর চেয়ে বেশি ব্যবহার করতে পারেন
একদা.
অন্যান্য ELF লিঙ্কারের সাথে সামঞ্জস্যের জন্য, যদি -R অপশন একটি ডিরেক্টরি দ্বারা অনুসরণ করা হয়
নাম, একটি ফাইলের নামের পরিবর্তে, এটি হিসাবে গণ্য করা হয় -আরপাথ বিকল্প।
-s
-- ফালা সব
আউটপুট ফাইল থেকে সমস্ত প্রতীক তথ্য বাদ দিন।
-S
--স্ট্রিপ-ডিবাগ
আউটপুট ফাইল থেকে ডিবাগার প্রতীক তথ্য (কিন্তু সব প্রতীক নয়) বাদ দিন।
-t
-- ট্রেস
ইনপুট ফাইলের নাম প্রিন্ট করুন ld তাদের প্রক্রিয়া করে।
-T স্ক্রিপ্ট ফাইল
--স্ক্রিপ্ট=স্ক্রিপ্ট ফাইল
ব্যবহার স্ক্রিপ্ট ফাইল লিঙ্কার স্ক্রিপ্ট হিসাবে। এই স্ক্রিপ্ট প্রতিস্থাপন ldএর ডিফল্ট লিঙ্কার স্ক্রিপ্ট
(এটি যোগ করার পরিবর্তে), তাই কমান্ড ফাইল প্রয়োজনীয় সবকিছু নির্দিষ্ট করতে হবে
আউটপুট ফাইল বর্ণনা করুন। যদি স্ক্রিপ্ট ফাইল বর্তমান ডিরেক্টরিতে বিদ্যমান নেই,
"ld" কোনো পূর্ববর্তী দ্বারা নির্দিষ্ট করা ডিরেক্টরিগুলিতে এটি সন্ধান করে -L বিকল্প একাধিক
-T বিকল্পগুলি জমা হয়।
-ডিটি স্ক্রিপ্ট ফাইল
--default-script=স্ক্রিপ্ট ফাইল
ব্যবহার স্ক্রিপ্ট ফাইল ডিফল্ট লিঙ্কার স্ক্রিপ্ট হিসাবে।
এই বিকল্পটি অনুরূপ --লিপি স্ক্রিপ্টের প্রক্রিয়াকরণ ছাড়া বিকল্প
বাকি কমান্ড লাইন প্রক্রিয়া করা না হওয়া পর্যন্ত বিলম্বিত. এই অনুমতি দেয়
বিকল্পের পরে স্থাপন করা হয়েছে --ডিফল্ট-স্ক্রিপ্ট প্রভাবিত করার জন্য কমান্ড লাইনের বিকল্প
লিঙ্কার স্ক্রিপ্টের আচরণ, যা গুরুত্বপূর্ণ হতে পারে যখন লিঙ্কার কমান্ড লাইন
ব্যবহারকারী দ্বারা সরাসরি নিয়ন্ত্রণ করা যাবে না। (যেমন কারণ কমান্ড লাইন হচ্ছে
অন্য টুল দ্বারা নির্মিত, যেমন জিসিসি).
-u প্রতীক
--অনির্ধারিত=প্রতীক
বল প্রতীক একটি অনির্ধারিত প্রতীক হিসাবে আউটপুট ফাইলে প্রবেশ করতে হবে। এটা করা হতে পারে,
উদাহরণস্বরূপ, স্ট্যান্ডার্ড লাইব্রেরি থেকে অতিরিক্ত মডিউলগুলির লিঙ্কিং ট্রিগার করুন। -u হতে পারে
অতিরিক্ত অনির্ধারিত চিহ্ন প্রবেশ করার জন্য বিভিন্ন বিকল্প আর্গুমেন্টের সাথে পুনরাবৃত্তি করুন। এই
বিকল্পটি "EXTERN" লিঙ্কার স্ক্রিপ্ট কমান্ডের সমতুল্য।
যদি এই বিকল্পটি অতিরিক্ত মডিউলগুলিকে লিঙ্কে টানতে বাধ্য করার জন্য ব্যবহার করা হয়,
এবং যদি প্রতীকটি অনির্ধারিত থাকার জন্য একটি ত্রুটি হয়, তাহলে বিকল্পটি
--প্রয়োজন-সংজ্ঞায়িত পরিবর্তে ব্যবহার করা উচিত।
--require-defined=প্রতীক
যে প্রয়োজন প্রতীক আউটপুট ফাইলে সংজ্ঞায়িত করা হয়। এই বিকল্পটি বিকল্প হিসাবে একই
--অনির্ধারিত যে ছাড়া যদি প্রতীক লিঙ্কার তারপর আউটপুট ফাইলে সংজ্ঞায়িত করা হয় না
একটি ত্রুটি জারি করবে এবং প্রস্থান করবে। একই প্রভাব একটি লিঙ্কার স্ক্রিপ্ট দ্বারা অর্জন করা যেতে পারে
"EXTERN", "ASSERT" এবং "DEFINED" একসাথে ব্যবহার করে। এই বিকল্পটি একাধিক ব্যবহার করা যেতে পারে
বার অতিরিক্ত চিহ্নের প্রয়োজন।
-উর C++ প্রোগ্রাম ছাড়া অন্য যেকোনো কিছুর জন্য, এই বিকল্পটি সমতুল্য -r: এটা উৎপন্ন করে
রিলোকেটেবল আউটপুট---অর্থাৎ, একটি আউটপুট ফাইল যা ইনপুট হিসাবে কাজ করতে পারে ld। কখন
C++ প্রোগ্রাম লিঙ্ক করা, -উর না কনস্ট্রাক্টরদের রেফারেন্স সমাধান করুন, ভিন্ন -r. এটা করে
ব্যবহার করার জন্য কাজ না -উর যে ফাইলগুলির সাথে নিজেরাই লিঙ্ক করা হয়েছিল -উর; একদা
কনস্ট্রাক্টর টেবিল তৈরি করা হয়েছে, এটি যোগ করা যাবে না। ব্যবহার করুন -উর শুধুমাত্র শেষের জন্য
আংশিক লিঙ্ক, এবং -r অন্যদের জন্য
--অনাথ-হ্যান্ডলিং=মোড
অনাথ বিভাগগুলি কীভাবে পরিচালনা করা হয় তা নিয়ন্ত্রণ করুন। একটি এতিম বিভাগ বিশেষভাবে নয়
একটি লিঙ্কার স্ক্রিপ্টে উল্লেখ করা হয়েছে।
মোড নিম্নলিখিত মানগুলির যেকোনো একটি থাকতে পারে:
"স্থান"
অনাথ বিভাগগুলিকে কৌশল অনুসরণ করে একটি উপযুক্ত আউটপুট বিভাগে স্থাপন করা হয়
বর্ণিত অনাথ সেকশনস. পছন্দ -- অনন্য বিভাগগুলি কেমন তাও প্রভাবিত করে
স্থাপিত।
"বাতিল করা"
সমস্ত এতিম বিভাগে তাদের স্থাপন দ্বারা, বাতিল করা হয় /বাতিল করা/ অধ্যায়.
"সতর্ক"
লিঙ্কার "স্থান" হিসাবে অনাথ বিভাগটি স্থাপন করবে এবং একটি সতর্কতাও জারি করবে।
"ত্রুটি"
কোনো অনাথ বিভাগ পাওয়া গেলে লিঙ্কার একটি ত্রুটি সহ প্রস্থান করবে।
ডিফল্ট যদি --অনাথ-হ্যান্ডলিং "স্থান" দেওয়া হয় না।
--অদ্বিতীয়[=অধ্যায়]
প্রতিটি ইনপুট বিভাগের মিলের জন্য একটি পৃথক আউটপুট বিভাগ তৈরি করে অধ্যায়, বা যদি
ঐচ্ছিক ওয়াইল্ডকার্ড অধ্যায় আর্গুমেন্ট অনুপস্থিত, প্রতিটি এতিম ইনপুট বিভাগের জন্য. একটি
অনাথ বিভাগটি একটি লিঙ্কার স্ক্রিপ্টে বিশেষভাবে উল্লেখ করা হয়নি। আপনি এই ব্যবহার করতে পারেন
কমান্ড লাইনে একাধিকবার বিকল্প; এটি ইনপুটের স্বাভাবিক একত্রীকরণকে বাধা দেয়
একই নামের বিভাগ, একটি লিঙ্কার স্ক্রিপ্টে আউটপুট বিভাগের অ্যাসাইনমেন্ট ওভাররাইড করে।
-v
--সংস্করণ
-V এর জন্য সংস্করণ নম্বর প্রদর্শন করুন ld. দ্য -V বিকল্পটি সমর্থিত অনুকরণগুলিও তালিকাভুক্ত করে।
-x
--সব বাতিল
সমস্ত স্থানীয় চিহ্ন মুছুন।
-X
--স্থানীয়দের বাদ দিন
সমস্ত অস্থায়ী স্থানীয় চিহ্ন মুছুন। (এই চিহ্নগুলি সিস্টেম-নির্দিষ্ট স্থানীয় দিয়ে শুরু হয়
লেবেল উপসর্গ, সাধারণত .L ELF সিস্টেমের জন্য বা L ঐতিহ্যগত a.out সিস্টেমের জন্য।)
-y প্রতীক
--ট্রেস-সিম্বল=প্রতীক
প্রতিটি লিঙ্ক করা ফাইলের নাম প্রিন্ট করুন যার মধ্যে প্রতীক প্রদর্শিত এই বিকল্প দেওয়া যেতে পারে
যে কোন সংখ্যা অনেক সিস্টেমে একটি আন্ডারস্কোর প্রিপেন্ড করা প্রয়োজন।
এই বিকল্পটি উপযোগী যখন আপনার লিঙ্কে একটি অনির্ধারিত চিহ্ন থাকে কিন্তু আপনি জানেন না
রেফারেন্স কোথা থেকে আসছে।
-Y পথ
বিজ্ঞাপন পথ ডিফল্ট লাইব্রেরি অনুসন্ধানের পথে। এই বিকল্পটি সোলারিসের জন্য বিদ্যমান
সামঞ্জস্য।
-z শব্দ
স্বীকৃত কীওয়ার্ড হল:
combreloc
একাধিক রিলোক বিভাগকে একত্রিত করে এবং ডায়নামিক সিম্বল লুকআপ করতে তাদের সাজায়
ক্যাশে করা সম্ভব।
defs
অবজেক্ট ফাইলে অনির্ধারিত চিহ্নগুলিকে অনুমোদন করে না। শেয়ার করা অনির্ধারিত চিহ্ন
লাইব্রেরি এখনও অনুমোদিত।
execstack
বস্তুটিকে এক্সিকিউটেবল স্ট্যাকের প্রয়োজন হিসাবে চিহ্নিত করে।
বিশ্বব্যাপী
একটি ভাগ করা বস্তু নির্মাণ করার সময় এই বিকল্পটি শুধুমাত্র অর্থবহ। এটা তোলে
প্রতীক রেজোলিউশনের জন্য উপলব্ধ এই ভাগ করা বস্তু দ্বারা সংজ্ঞায়িত প্রতীক
পরবর্তীকালে লাইব্রেরি লোড করা হয়।
initfirst
একটি ভাগ করা বস্তু নির্মাণ করার সময় এই বিকল্পটি শুধুমাত্র অর্থবহ। এটি বস্তুটিকে চিহ্নিত করে
যাতে রানটাইম ইনিশিয়ালাইজেশন এর রানটাইম ইনিশিয়ালাইজেশনের আগে ঘটবে
একই সময়ে প্রক্রিয়ার মধ্যে আনা অন্য কোনো বস্তু। একইভাবে
অবজেক্টের রানটাইম চূড়ান্তকরণের রানটাইম চূড়ান্ত হওয়ার পরে ঘটবে
অন্য কোনো বস্তু।
ইন্টারপোজ
বস্তুটিকে চিহ্নিত করে যেটি এর প্রতীক টেবিলটি সমস্ত চিহ্নের আগে ইন্টারপোজ করে কিন্তু
প্রাথমিক নির্বাহযোগ্য।
অলস
একটি এক্সিকিউটেবল বা শেয়ার্ড লাইব্রেরি তৈরি করার সময়, গতিশীল বলতে এটি চিহ্নিত করুন
ফাংশন কল করার সময় ফাংশন কল রেজোলিউশনকে পয়েন্টে স্থগিত করতে লিঙ্কার
(অলস বাঁধাই), বরং লোড সময়ের চেয়ে। অলস বাঁধাই ডিফল্ট।
loadfltr
বস্তুটিকে চিহ্নিত করে যে এর ফিল্টারগুলি রানটাইমে অবিলম্বে প্রক্রিয়া করা হবে।
muldefs
একাধিক সংজ্ঞার অনুমতি দেয়।
nocombreloc
একাধিক রিলোক বিভাগ একত্রিত করা অক্ষম করে।
nocopyreloc
সংজ্ঞায়িত ভেরিয়েবলের জায়গায় ব্যবহৃত .dynbss ভেরিয়েবল তৈরি করা লিঙ্কার নিষ্ক্রিয় করুন
ভাগ করা লাইব্রেরি। গতিশীল পাঠ্য স্থানান্তর হতে পারে।
nodefaultlib
বস্তুটিকে চিহ্নিত করে যে এই বস্তুর নির্ভরতার জন্য অনুসন্ধান যে কোনোটিকে উপেক্ষা করবে
ডিফল্ট লাইব্রেরি অনুসন্ধান পাথ.
নোডেলিট
রানটাইমে অবজেক্টটি আনলোড করা উচিত নয় বলে চিহ্নিত করে।
নোডলোপেন
বস্তুটিকে "dlopen" এ উপলব্ধ নয় চিহ্নিত করে।
নোডাম্প
বস্তুটিকে "dldump" দ্বারা ডাম্প করা যাবে না বলে চিহ্নিত করে।
noexecstack
বস্তুটিকে এক্সিকিউটেবল স্ট্যাকের প্রয়োজন নেই বলে চিহ্নিত করে।
পাঠ
ভাগ করা বস্তুর মধ্যে DT_TEXTREL কে ত্রুটি হিসাবে বিবেচনা করুন৷
নোট
ভাগ করা বস্তুর মধ্যে DT_TEXTREL কে ত্রুটি হিসাবে বিবেচনা করবেন না৷
টেক্সটঅফ
ভাগ করা বস্তুর মধ্যে DT_TEXTREL কে ত্রুটি হিসাবে বিবেচনা করবেন না৷
norelro
বস্তুতে একটি ELF "PT_GNU_RELRO" সেগমেন্ট হেডার তৈরি করবেন না।
এখন একটি এক্সিকিউটেবল বা শেয়ার্ড লাইব্রেরি তৈরি করার সময়, গতিশীল বলতে এটি চিহ্নিত করুন
প্রোগ্রাম শুরু হলে বা শেয়ার করা হলে সমস্ত চিহ্নের সমাধান করতে লিঙ্কার
লাইব্রেরি ফাংশন কল রেজোলিউশন স্থগিত করার পরিবর্তে dlopen ব্যবহার করার সাথে যুক্ত
বিন্দু যখন ফাংশন প্রথম কল করা হয়.
উত্স
বস্তুতে $ORIGIN থাকতে পারে চিহ্নিত করে।
relro
বস্তুতে একটি ELF "PT_GNU_RELRO" সেগমেন্ট হেডার তৈরি করুন।
সর্বোচ্চ-পৃষ্ঠা-আকার=মূল্য
এমুলেশন সর্বোচ্চ পৃষ্ঠার আকার সেট করুন মূল্য.
সাধারণ-পৃষ্ঠা-আকার=মূল্য
এমুলেশন সাধারণ পৃষ্ঠার আকার সেট করুন মূল্য.
স্ট্যাক-সাইজ=মূল্য
একটি ELF "PT_GNU_STACK" সেগমেন্টের জন্য একটি স্ট্যাকের আকার নির্দিষ্ট করুন৷ শূন্য ইচ্ছা উল্লেখ করা
যেকোনো ডিফল্ট অ-শূন্য আকারের "PT_GNU_STACK" সেগমেন্ট তৈরিকে ওভাররাইড করুন।
bndplt
PLT এন্ট্রিতে সর্বদা BND উপসর্গ তৈরি করুন। Linux/x86_64 এর জন্য সমর্থিত।
noextern-সুরক্ষিত-ডেটা
শেয়ার্ড লাইব্রেরি তৈরি করার সময় সুরক্ষিত ডেটা প্রতীককে বাহ্যিক হিসাবে বিবেচনা করবেন না। এই
বিকল্প লিঙ্কার ব্যাকএন্ড ডিফল্ট ওভাররাইড করে। এটি ভুল সমাধানের জন্য ব্যবহার করা যেতে পারে
কম্পাইলার দ্বারা উত্পন্ন সুরক্ষিত ডেটা চিহ্নগুলির বিরুদ্ধে স্থানান্তর। উপর আপডেট
অন্য মডিউল দ্বারা সুরক্ষিত ডেটা চিহ্ন ফলস্বরূপ ভাগ করা দৃশ্যমান নয়
লাইব্রেরি i386 এবং x86-64 এর জন্য সমর্থিত।
call-nop=prefix-addr
call-nop=prefix-nop
call-nop=প্রত্যয়-নপ
call-nop= উপসর্গ-সংবাদের একক
call-nop=প্রত্যয়-সংবাদের একক
স্থানীয়ভাবে পরোক্ষ কলে রূপান্তর করার সময় 1-বাইট "NOP" প্যাডিং নির্দিষ্ট করুন
সংজ্ঞায়িত ফাংশন, foo, এর GOT স্লটের মাধ্যমে। call-nop=prefix-addr "0x67 তৈরি করে
কল foo"। call-nop=prefix-nop "0x90 কল foo" তৈরি করে। call-nop=প্রত্যয়-নপ
"কল foo 0x90" তৈরি করে। call-nop= উপসর্গ-সংবাদের একক উৎপন্ন করে"সংবাদের একক কল foo".
call-nop=প্রত্যয়-সংবাদের একক "কল foo তৈরি করে বাইট". i386 এবং x86_64 এর জন্য সমর্থিত।
অন্যান্য কীওয়ার্ড সোলারিস সামঞ্জস্যের জন্য উপেক্ষা করা হয়।
-( নথিপত্র -)
--স্টার্ট-গ্রুপ নথিপত্র --শেষ-গোষ্ঠী
সার্জারির নথিপত্র সংরক্ষণাগার ফাইলগুলির একটি তালিকা হওয়া উচিত। তারা হয় স্পষ্ট ফাইল হতে পারে
নাম, বা -l অপশন।
নির্দিষ্ট আর্কাইভগুলি বারবার অনুসন্ধান করা হয় যতক্ষণ না কোন নতুন অনির্ধারিত রেফারেন্স না থাকে
তৈরি সাধারণত, একটি আর্কাইভ শুধুমাত্র একবার অনুসন্ধান করা হয় যে ক্রমে এটি নির্দিষ্ট করা হয়
কমান্ড লাইনে। যদি একটি অনির্ধারিত সমাধানের জন্য সেই সংরক্ষণাগারে একটি প্রতীক প্রয়োজন হয়
একটি আর্কাইভের একটি বস্তু দ্বারা নির্দেশিত প্রতীক যা পরে কমান্ড লাইনে প্রদর্শিত হয়,
লিঙ্কার সেই রেফারেন্স সমাধান করতে সক্ষম হবে না। আর্কাইভগুলিকে দলবদ্ধ করে,
সব সম্ভাব্য রেফারেন্স সমাধান না হওয়া পর্যন্ত তারা সব বারবার অনুসন্ধান করা হবে.
এই বিকল্প ব্যবহার করে একটি উল্লেখযোগ্য কর্মক্ষমতা খরচ আছে। এটি শুধুমাত্র যখন ব্যবহার করা ভাল
দুই বা ততোধিক আর্কাইভের মধ্যে অনিবার্য সার্কুলার রেফারেন্স আছে।
--গ্রহণ-অজানা-ইনপুট-খিলান
--না-গ্রহণ-অজানা-ইনপুট-খিলান
লিঙ্কারকে ইনপুট ফাইল গ্রহণ করতে বলে যার আর্কিটেকচার শনাক্ত করা যায় না। দ্য
অনুমান হল যে ব্যবহারকারী জানে তারা কি করছে এবং ইচ্ছাকৃতভাবে লিঙ্ক করতে চায়
এই অজানা ইনপুট ফাইলগুলিতে। এটি আগে লিঙ্কারের ডিফল্ট আচরণ ছিল
মুক্তি 2.14। রিলিজ 2.14 থেকে ডিফল্ট আচরণ হল এই ধরনের ইনপুট প্রত্যাখ্যান করা
ফাইল, এবং তাই --গ্রহণ-অজানা-ইনপুট-খিলান পুরানো পুনরুদ্ধার করার বিকল্প যোগ করা হয়েছে
আচরণ।
--যেমন দরকার
--না-প্রয়োজনীয়
এই বিকল্পটি কমান্ডে উল্লিখিত গতিশীল লাইব্রেরির জন্য ELF DT_NEEDED ট্যাগগুলিকে প্রভাবিত করে
পরে লাইন --যেমন দরকার বিকল্প সাধারণত লিঙ্কার এর জন্য একটি DT_NEEDED ট্যাগ যোগ করবে
কমান্ড লাইনে উল্লিখিত প্রতিটি গতিশীল লাইব্রেরি, লাইব্রেরি যাই হোক না কেন
আসলে প্রয়োজন বা না। --যেমন দরকার শুধুমাত্র এর জন্য একটি DT_NEEDED ট্যাগ নির্গত হতে পারে
একটি লাইব্রেরি যে at যে বিন্দু in দ্য লিংক একটি অ-দুর্বল অনির্ধারিত প্রতীককে সন্তুষ্ট করে
একটি নিয়মিত অবজেক্ট ফাইল থেকে রেফারেন্স বা, যদি লাইব্রেরিটি DT_NEEDED-এ পাওয়া না যায়
অন্যান্য প্রয়োজনীয় লাইব্রেরির তালিকা, অন্যের থেকে একটি অ-দুর্বল অনির্ধারিত প্রতীক রেফারেন্স
ডায়নামিক লাইব্রেরি প্রয়োজন। কমান্ড লাইনে উপস্থিত অবজেক্ট ফাইল বা লাইব্রেরি পরে
প্রশ্নে থাকা লাইব্রেরি লাইব্রেরিটিকে প্রয়োজন অনুযায়ী দেখা হচ্ছে কিনা তা প্রভাবিত করে না। এই
আর্কাইভ থেকে অবজেক্ট ফাইল নিষ্কাশনের নিয়মের অনুরূপ। --না-প্রয়োজনীয়
ডিফল্ট আচরণ পুনরুদ্ধার করে।
--অ্যাড-প্রয়োজনীয়
--কোন-সংযোজন-প্রয়োজন নেই
এই দুটি বিকল্পের সাথে তাদের নামের মিল থাকার কারণে অবমূল্যায়ন করা হয়েছে৷
--যেমন দরকার এবং --না-প্রয়োজনীয় বিকল্প তাদের বদলি করা হয়েছে
--কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি এবং --নো-কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি.
-জাহির করা শব্দ
এই বিকল্পটি SunOS সামঞ্জস্যের জন্য উপেক্ষা করা হয়েছে।
-বিডাইনামিক
-ডি
-কল_শেয়ার করা হয়েছে
ডায়নামিক লাইব্রেরির বিরুদ্ধে লিঙ্ক। এটি শুধুমাত্র প্ল্যাটফর্মে অর্থপূর্ণ যার জন্য ভাগ করা হয়েছে
লাইব্রেরি সমর্থিত। এই বিকল্পটি সাধারণত এই ধরনের প্ল্যাটফর্মে ডিফল্ট। দ্য
এই বিকল্পের বিভিন্ন রূপগুলি বিভিন্ন সিস্টেমের সাথে সামঞ্জস্যের জন্য। আপনি পারেন
কমান্ড লাইনে এই বিকল্পটি একাধিকবার ব্যবহার করুন: এটি লাইব্রেরি অনুসন্ধানকে প্রভাবিত করে
-l বিকল্পগুলি যা এটি অনুসরণ করে।
-বিগ্রুপ
ডায়নামিক বিভাগে "DT_FLAGS_1" এন্ট্রিতে "DF_1_GROUP" পতাকা সেট করুন। এই
রানটাইম লিঙ্কারকে এই অবজেক্টে লুকআপ পরিচালনা করতে এবং এর নির্ভরতা হতে দেয়
শুধুমাত্র দলের ভিতরে সঞ্চালিত. --unresolved-symbols=report-all উহ্য হয় এই
বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মে অর্থবহ যা ভাগ করা লাইব্রেরি সমর্থন করে।
-বস্ট্যাটিক
-ডিএন
-non_shared
- স্থির
শেয়ার করা লাইব্রেরির বিরুদ্ধে লিঙ্ক করবেন না। এটি শুধুমাত্র প্ল্যাটফর্মে অর্থপূর্ণ যার জন্য
ভাগ করা লাইব্রেরি সমর্থিত। এই বিকল্পের বিভিন্ন বৈকল্পিক জন্য হয়
বিভিন্ন সিস্টেমের সাথে সামঞ্জস্যপূর্ণ। আপনি এই বিকল্পটি একাধিকবার ব্যবহার করতে পারেন
কমান্ড লাইন: এটি লাইব্রেরি অনুসন্ধানকে প্রভাবিত করে -l বিকল্পগুলি যা এটি অনুসরণ করে। এই
বিকল্পটিও বোঝায় --unresolved-symbols=report-all. এই বিকল্পটি ব্যবহার করা যেতে পারে
- শেয়ার করা হয়েছে. এটি করার অর্থ হল একটি শেয়ার্ড লাইব্রেরি তৈরি করা হচ্ছে কিন্তু সবকটি
লাইব্রেরির বাহ্যিক রেফারেন্সগুলি অবশ্যই স্ট্যাটিক থেকে এন্ট্রি টানিয়ে সমাধান করতে হবে
লাইব্রেরি।
- প্রতীকী
একটি ভাগ করা লাইব্রেরি তৈরি করার সময়, সংজ্ঞার সাথে বৈশ্বিক চিহ্নের রেফারেন্সগুলিকে আবদ্ধ করুন
শেয়ার্ড লাইব্রেরির মধ্যে, যদি থাকে। সাধারণত, লিঙ্কযুক্ত একটি প্রোগ্রামের জন্য এটি সম্ভব
শেয়ার্ড লাইব্রেরির মধ্যে সংজ্ঞা ওভাররাইড করতে একটি শেয়ার্ড লাইব্রেরির বিরুদ্ধে। এই
বিকল্পের সাথেও ব্যবহার করা যেতে পারে --রপ্তানি-গতিশীল বিকল্প, একটি অবস্থান তৈরি করার সময়
স্বাধীন এক্সিকিউটেবল, গ্লোবাল সিম্বলের রেফারেন্সকে সংজ্ঞার মধ্যে আবদ্ধ করতে
নির্বাহযোগ্য এই বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মে অর্থবহ যা শেয়ার করা সমর্থন করে
লাইব্রেরি এবং অবস্থান স্বাধীন এক্সিকিউটেবল।
-বাসিম্বলিক-ফাংশন
একটি শেয়ার্ড লাইব্রেরি তৈরি করার সময়, গ্লোবাল ফাংশন চিহ্নের সাথে রেফারেন্স আবদ্ধ করুন
ভাগ করা লাইব্রেরির মধ্যে সংজ্ঞা, যদি থাকে। এই বিকল্পটি এর সাথেও ব্যবহার করা যেতে পারে
--রপ্তানি-গতিশীল বিকল্প, একটি অবস্থান স্বাধীন এক্সিকিউটেবল তৈরি করার সময়, আবদ্ধ করার জন্য
এক্সিকিউটেবলের মধ্যে সংজ্ঞার গ্লোবাল ফাংশন চিহ্নের উল্লেখ। এই
বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মে অর্থবহ যা ভাগ করা লাইব্রেরি এবং অবস্থান সমর্থন করে
স্বাধীন এক্সিকিউটেবল।
--ডাইনামিক-তালিকা=ডাইনামিক-তালিকা-ফাইল
লিঙ্কারে একটি গতিশীল তালিকা ফাইলের নাম উল্লেখ করুন। এটি সাধারণত ব্যবহৃত হয় যখন
বিশ্বব্যাপী চিহ্নগুলির একটি তালিকা নির্দিষ্ট করতে শেয়ার্ড লাইব্রেরি তৈরি করা যার রেফারেন্স
ভাগ করা লাইব্রেরির মধ্যে সংজ্ঞা বা তৈরি করা উচিত নয়
ডায়নামিকলি লিঙ্ক করা এক্সিকিউটেবল চিহ্নের একটি তালিকা নির্দিষ্ট করতে যা যোগ করা উচিত
এক্সিকিউটেবলে প্রতীক টেবিল। এই বিকল্পটি শুধুমাত্র ELF প্ল্যাটফর্মে অর্থবহ
যা শেয়ার্ড লাইব্রেরি সমর্থন করে।
গতিশীল তালিকার বিন্যাস স্কোপ এবং নোড ছাড়া সংস্করণ নোডের মতোই
নাম দেখা সংস্করণ আরও তথ্যের জন্য.
--ডাইনামিক-তালিকা-ডেটা
ডায়নামিক তালিকায় সমস্ত গ্লোবাল ডেটা চিহ্ন অন্তর্ভুক্ত করুন।
--ডাইনামিক-তালিকা-সিপিপি-নতুন
C++ অপারেটরের জন্য বিল্টইন ডায়নামিক তালিকা প্রদান করুন এবং মুছে দিন। এটি প্রধানত দরকারী
ভাগ করা libstdc++ নির্মাণের জন্য।
--ডাইনামিক-লিস্ট-সিপিপি-টাইপইনফো
C++ রানটাইম টাইপ সনাক্তকরণের জন্য অন্তর্নির্মিত গতিশীল তালিকা প্রদান করুন।
--চেক-বিভাগ
--না-চেক-বিভাগ
লিঙ্কারকে জিজ্ঞেস করে না সেগুলিকে বরাদ্দ করা হয়েছে কিনা তা দেখার জন্য বিভাগ ঠিকানাগুলি পরীক্ষা করতে৷
কোন ওভারল্যাপ আছে. সাধারণত লিঙ্কার এই চেক সঞ্চালন করবে, এবং যদি এটি খুঁজে পায়
কোনো ওভারল্যাপ এটি উপযুক্ত ত্রুটি বার্তা তৈরি করবে। লিঙ্কার সম্পর্কে জানেন, এবং
ওভারলে বিভাগগুলির জন্য ভাতা তৈরি করে। ডিফল্ট আচরণ পুনরুদ্ধার করা যেতে পারে
কমান্ড লাইন সুইচ ব্যবহার করে --চেক-বিভাগ. সেকশন ওভারল্যাপ সাধারণত হয় না
স্থানান্তরযোগ্য লিঙ্কগুলির জন্য চেক করা হয়েছে। আপনি ব্যবহার করে যে ক্ষেত্রে চেক জোর করতে পারেন
--চেক-বিভাগ বিকল্প।
--কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি
--নো-কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি
এই বিকল্পটি DT_NEEDED ট্যাগ দ্বারা উল্লেখিত ডায়নামিক লাইব্রেরির চিকিৎসাকে প্রভাবিত করে
ভিতরে কমান্ড লাইনে উল্লেখিত ELF গতিশীল লাইব্রেরি। সাধারণত লিঙ্কার হবে না
একটি DT_NEEDED ট্যাগে উল্লিখিত প্রতিটি লাইব্রেরির জন্য আউটপুট বাইনারিতে একটি DT_NEEDED ট্যাগ যোগ করুন
একটি ইনপুট ডায়নামিক লাইব্রেরিতে। সঙ্গে --কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি কমান্ডে নির্দিষ্ট করা হয়েছে
লাইন যদিও এটি অনুসরণ করে এমন যেকোনো গতিশীল লাইব্রেরিতে তাদের DT_NEEDED এন্ট্রি থাকবে
যোগ করা হয়েছে এর সাথে ডিফল্ট আচরণ পুনরুদ্ধার করা যেতে পারে --নো-কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি.
এই বিকল্পটি ডায়নামিক লাইব্রেরিতে প্রতীকগুলির রেজোলিউশনের উপরও প্রভাব ফেলে।
সঙ্গে --কপি-ডিটি-প্রয়োজনীয়-এন্ট্রি কমান্ড লাইনে উল্লেখিত ডাইনামিক লাইব্রেরি হবে
অন্যান্য লাইব্রেরিতে তাদের DT_NEEDED ট্যাগ অনুসরণ করে বারবার অনুসন্ধান করা হয়েছে, যাতে
আউটপুট বাইনারি দ্বারা প্রয়োজনীয় চিহ্নগুলি সমাধান করুন। তবে ডিফল্ট সেটিং সহ
এটি অনুসরণ করে এমন গতিশীল লাইব্রেরিগুলির অনুসন্ধান ডাইনামিক লাইব্রেরির সাথে বন্ধ হয়ে যাবে
নিজেই প্রতীকগুলি সমাধান করার জন্য কোনও DT_NEEDED লিঙ্কগুলি অতিক্রম করা হবে না৷
--ক্রেফ
একটি ক্রস রেফারেন্স টেবিল আউটপুট. একটি লিঙ্কার মানচিত্র ফাইল তৈরি করা হচ্ছে, ক্রস
রেফারেন্স টেবিল মানচিত্র ফাইলে মুদ্রিত হয়. অন্যথায়, এটি স্ট্যান্ডার্ডে মুদ্রিত হয়
আউটপুট।
টেবিলের বিন্যাস ইচ্ছাকৃতভাবে সহজ, যাতে এটি সহজেই প্রক্রিয়া করা যেতে পারে
প্রয়োজনে একটি স্ক্রিপ্ট। চিহ্নগুলি ছাপানো হয়, নাম অনুসারে সাজানো হয়। প্রতিটি প্রতীকের জন্য,
ফাইল নামের একটি তালিকা দেওয়া হয়. যদি প্রতীক সংজ্ঞায়িত করা হয়, তালিকাভুক্ত প্রথম ফাইল হল
সংজ্ঞার অবস্থান। যদি প্রতীকটিকে একটি সাধারণ মান হিসাবে সংজ্ঞায়িত করা হয় তবে যেকোনো ফাইল
যেখানে এই ঘটবে পরবর্তী প্রদর্শিত. সবশেষে যেকোন ফাইল যে চিহ্নের উল্লেখ করে
তালিকাভুক্ত।
--কোন-সংজ্ঞায়িত-সাধারণ
এই বিকল্পটি সাধারণ চিহ্নগুলিতে ঠিকানাগুলির নিয়োগকে বাধা দেয়। এই পান্ডুলিপি
কমান্ড "INHIBIT_COMMON_ALLOCATION" একই প্রভাব আছে।
সার্জারির --কোন-সংজ্ঞায়িত-সাধারণ বিকল্পটি ঠিকানা বরাদ্দ করার সিদ্ধান্তকে ডিকপল করার অনুমতি দেয়
আউটপুট ফাইল টাইপ পছন্দ থেকে সাধারণ প্রতীক; অন্যথায় একটি অ-রিলোকেটেবল
আউটপুট টাইপ কমন সিম্বলে অ্যাড্রেস বরাদ্দ করে। ব্যবহার --কোন-সংজ্ঞায়িত-সাধারণ
একটি শেয়ার্ড লাইব্রেরি থেকে উল্লেখ করা সাধারণ চিহ্নগুলিকে বরাদ্দ করার অনুমতি দেয়৷
শুধুমাত্র প্রধান প্রোগ্রামে ঠিকানা। এটি অব্যবহৃত ডুপ্লিকেট স্থান মুছে দেয়
শেয়ার্ড লাইব্রেরি, এবং ভুল সমাধানের জন্য সম্ভাব্য বিভ্রান্তিও প্রতিরোধ করে
ডুপ্লিকেট যখন অনেক গতিশীল মডিউল আছে যার জন্য বিশেষ অনুসন্ধান পাথ আছে
রানটাইম প্রতীক রেজোলিউশন।
--defsym=প্রতীক=অভিব্যক্তি
আউটপুট ফাইলে একটি বিশ্বব্যাপী প্রতীক তৈরি করুন, যার দ্বারা প্রদত্ত পরম ঠিকানা রয়েছে
অভিব্যক্তি. একাধিক সংজ্ঞায়িত করার জন্য আপনি এই বিকল্পটি যতবার প্রয়োজন ততবার ব্যবহার করতে পারেন
কমান্ড লাইনে চিহ্ন। পাটিগণিত একটি সীমিত ফর্ম জন্য সমর্থিত
অভিব্যক্তি এই প্রসঙ্গে: আপনি একটি হেক্সাডেসিমেল ধ্রুবক বা একটি নাম দিতে পারেন
বিদ্যমান প্রতীক, অথবা হেক্সাডেসিমেল ধ্রুবক যোগ বা বিয়োগ করতে "+" এবং "-" ব্যবহার করুন
প্রতীক আপনার যদি আরও বিস্তৃত অভিব্যক্তির প্রয়োজন হয়, লিঙ্কার কমান্ড ব্যবহার করে বিবেচনা করুন
একটি স্ক্রিপ্ট থেকে ভাষা। বিঃদ্রঃ: মধ্যে কোন সাদা স্থান থাকা উচিত নয় প্রতীক, দ্য
সমান চিহ্ন ("="), এবং অভিব্যক্তি.
-- demangle[=শৈলী]
--নো-দেমঙ্গল
এই বিকল্পগুলি ত্রুটি বার্তা এবং অন্যান্য চিহ্নের নামগুলিকে বিচ্ছিন্ন করতে হবে কিনা তা নিয়ন্ত্রণ করে৷
আউটপুট যখন লিঙ্কারকে ডিম্যানগল করতে বলা হয়, তখন এটি একটি চিহ্নের নাম উপস্থাপন করার চেষ্টা করে
পঠনযোগ্য ফ্যাশন: অবজেক্ট ফাইল দ্বারা ব্যবহার করা হলে এটি লিডিং আন্ডারস্কোরকে স্ট্রিপ করে
বিন্যাস, এবং C++ ম্যাঙ্গলড চিহ্নের নামগুলিকে ব্যবহারকারীর পাঠযোগ্য নামগুলিতে রূপান্তর করে। ভিন্ন
কম্পাইলারের বিভিন্ন ম্যাঙ্গলিং শৈলী আছে। ঐচ্ছিক demangling শৈলী আর্গুমেন্ট করতে পারেন
আপনার কম্পাইলার জন্য একটি উপযুক্ত demangling শৈলী চয়ন করতে ব্যবহার করা হবে. লিঙ্কার হবে
পরিবেশ পরিবর্তনশীল না হলে ডিফল্টরূপে বিচ্ছিন্ন করুন COLLECT_NO_DEMANGLE সেট করা হয় এইগুলো
বিকল্পগুলি ডিফল্ট ওভাররাইড করতে ব্যবহার করা যেতে পারে।
-Iফাইল
--ডাইনামিক-লিংকার=ফাইল
ডায়নামিক লিঙ্কারের নাম সেট করুন। উৎপন্ন করার সময় এটি শুধুমাত্র অর্থপূর্ণ
গতিশীলভাবে সংযুক্ত ELF এক্সিকিউটেবল। ডিফল্ট ডায়নামিক লিঙ্কার সাধারণত সঠিক হয়;
আপনি কি করছেন তা না জানলে এটি ব্যবহার করবেন না।
--নো-ডাইনামিক-লিংকার
একটি এক্সিকিউটেবল ফাইল তৈরি করার সময়, একটি ডায়নামিক লিঙ্কার ব্যবহার করার অনুরোধটি বাদ দিন
লোড-টাইম এটি শুধুমাত্র ELF এক্সিকিউটেবলের জন্য অর্থবহ যা গতিশীল রয়েছে
স্থানান্তর, এবং সাধারণত এন্ট্রি পয়েন্ট কোড প্রয়োজন যা এইগুলি প্রক্রিয়া করতে সক্ষম
স্থানান্তর
--মারাত্মক-সতর্কতা
--নো-মারাত্মক-সতর্কতা
সমস্ত সতর্কতাকে ত্রুটি হিসাবে বিবেচনা করুন। বিকল্পটি দিয়ে ডিফল্ট আচরণ পুনরুদ্ধার করা যেতে পারে
--নো-মারাত্মক-সতর্কতা.
--force-exe-প্রত্যয়
নিশ্চিত করুন যে একটি আউটপুট ফাইলের একটি .exe প্রত্যয় আছে।
যদি একটি সফলভাবে নির্মিত সম্পূর্ণ লিঙ্কযুক্ত আউটপুট ফাইলে ".exe" বা ".dll" না থাকে
প্রত্যয়, এই বিকল্পটি লিঙ্কারকে একই নামের একটিতে আউটপুট ফাইল অনুলিপি করতে বাধ্য করে
একটি ".exe" প্রত্যয় সহ। একটি তে অপরিবর্তিত ইউনিক্স মেকফাইলস ব্যবহার করার সময় এই বিকল্পটি কার্যকর
মাইক্রোসফ্ট উইন্ডোজ হোস্ট, যেহেতু উইন্ডোজের কিছু সংস্করণ এটি ছাড়া একটি চিত্র চালাবে না
একটি ".exe" প্রত্যয় শেষ হয়।
--gc-বিভাগ
--no-gc-বিভাগ
অব্যবহৃত ইনপুট বিভাগের আবর্জনা সংগ্রহ সক্ষম করুন। এটা যে টার্গেট উপেক্ষা করা হয়
এই বিকল্প সমর্থন না. ডিফল্ট আচরণ (এই আবর্জনা সম্পাদন না করার
সংগ্রহ) নির্দিষ্ট করে পুনরুদ্ধার করা যেতে পারে --no-gc-বিভাগ কমান্ড লাইনে। বিঃদ্রঃ
COFF এবং PE বিন্যাস লক্ষ্যগুলির জন্য আবর্জনা সংগ্রহ সমর্থিত, কিন্তু
বাস্তবায়ন বর্তমানে পরীক্ষামূলক বলে মনে করা হয়।
--gc-বিভাগ চিহ্ন এবং পরীক্ষা করে কোন ইনপুট বিভাগগুলি ব্যবহার করা হবে তা নির্ধারণ করে
স্থানান্তর এন্ট্রি চিহ্ন সম্বলিত বিভাগ এবং সমস্ত বিভাগ রয়েছে
কমান্ড-লাইনে অনির্ধারিত চিহ্নগুলি রাখা হবে, যেমন বিভাগগুলি থাকবে
গতিশীল বস্তু দ্বারা উল্লেখিত চিহ্ন। উল্লেখ্য যে শেয়ার্ড লাইব্রেরি তৈরি করার সময়,
লিঙ্কারকে অবশ্যই অনুমান করতে হবে যে কোনও দৃশ্যমান প্রতীক উল্লেখ করা হয়েছে। একবার এই প্রাথমিক সেট
বিভাগগুলি নির্ধারণ করা হয়েছে, লিঙ্কারটি যেকোন বিভাগে ব্যবহৃত হিসাবে পুনরাবৃত্তিমূলকভাবে চিহ্নিত করে
তাদের স্থানান্তর দ্বারা উল্লেখ করা হয়েছে। দেখা --প্রবেশ এবং --অনির্ধারিত.
একটি আংশিক লিঙ্ক করার সময় এই বিকল্পটি সেট করা যেতে পারে (বিকল্পের সাথে সক্ষম -r)। এই
ক্ষেত্রে রাখা চিহ্নগুলির মূলটি স্পষ্টভাবে একটি দ্বারা নির্দিষ্ট করা আবশ্যক --প্রবেশ or
--অনির্ধারিত বিকল্প বা লিঙ্কার স্ক্রিপ্টে একটি "ENTRY" কমান্ড দ্বারা।
--প্রিন্ট-জিসি-বিভাগ
--নো-প্রিন্ট-জিসি-বিভাগ
আবর্জনা সংগ্রহের দ্বারা সরানো সমস্ত বিভাগ তালিকাভুক্ত করুন। তালিকা stderr এ মুদ্রিত হয়।
এই বিকল্পটি শুধুমাত্র তখনই কার্যকর হয় যদি এর মাধ্যমে আবর্জনা সংগ্রহ সক্ষম করা থাকে
--gc-বিভাগ) বিকল্প। ডিফল্ট আচরণ (বিভাগগুলিকে তালিকাভুক্ত না করা
সরানো) নির্দিষ্ট করে পুনরুদ্ধার করা যেতে পারে --নো-প্রিন্ট-জিসি-বিভাগ কমান্ড লাইনে।
--প্রিন্ট-আউটপুট-ফরম্যাট
ডিফল্ট আউটপুট ফরম্যাটের নাম প্রিন্ট করুন (সম্ভবত অন্যান্য কমান্ড-লাইন দ্বারা প্রভাবিত
বিকল্প)। এটি এমন একটি স্ট্রিং যা একটি "OUTPUT_FORMAT" লিঙ্কার স্ক্রিপ্টে প্রদর্শিত হবে৷
কমান্ড।
--প্রিন্ট-মেমরি-ব্যবহার
প্রিন্ট ব্যবহৃত আকার, মোট আকার এবং মেমরি অঞ্চলের ব্যবহৃত আকার সঙ্গে তৈরি স্মৃতি
আদেশ বিনামূল্যের পরিমাণ দ্রুত দেখার জন্য এমবেড করা লক্ষ্যে এটি কার্যকর
স্মৃতি. আউটপুটের বিন্যাসে একটি শিরোনাম এবং প্রতি অঞ্চলে একটি লাইন রয়েছে। এটাই
মানুষ পঠনযোগ্য এবং সহজে টুল দ্বারা পার্সযোগ্য উভয়. এখানে একটি আউটপুট একটি উদাহরণ:
মেমরি অঞ্চল ব্যবহৃত আকার অঞ্চলের আকার % বয়স ব্যবহৃত হয়েছে
রম: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
--help
স্ট্যান্ডার্ড আউটপুটে কমান্ড-লাইন বিকল্পগুলির একটি সারাংশ প্রিন্ট করুন এবং প্রস্থান করুন।
--লক্ষ্য-সাহায্য
স্ট্যান্ডার্ড আউটপুটে সমস্ত লক্ষ্য নির্দিষ্ট বিকল্পগুলির একটি সারাংশ প্রিন্ট করুন এবং প্রস্থান করুন।
-মানচিত্র =ম্যাপফাইল
ফাইলটিতে একটি লিঙ্ক মানচিত্র প্রিন্ট করুন ম্যাপফাইল. এর বর্ণনা দেখুন -M বিকল্প, উপরে।
--না-মেমরি রাখা
ld সাধারণত এর প্রতীক টেবিল ক্যাশ করে মেমরি ব্যবহারের উপর গতির জন্য অপ্টিমাইজ করে
মেমরিতে ইনপুট ফাইল। এই বিকল্পটি বলে ld পরিবর্তে মেমরি ব্যবহারের জন্য অপ্টিমাইজ করতে, দ্বারা
প্রয়োজনে প্রতীক টেবিল পুনরায় পড়া। এই প্রয়োজন হতে পারে যদি ld রান আউট
একটি বড় এক্সিকিউটেবল লিঙ্ক করার সময় মেমরি স্পেস।
--কোন-অনির্ধারিত
-z defs
নিয়মিত অবজেক্ট ফাইল থেকে অমীমাংসিত প্রতীক রেফারেন্স রিপোর্ট করুন। এই এমনকি যদি করা হয়
লিঙ্কার একটি অ-প্রতীকী শেয়ার করা লাইব্রেরি তৈরি করছে। সুইচ
--[না-]অনুমতি-শ্লিব-অনির্ধারিত অমীমাংসিত রিপোর্ট করার জন্য আচরণ নিয়ন্ত্রণ করে
শেয়ার করা লাইব্রেরিতে পাওয়া তথ্যসূত্র লিঙ্ক করা হচ্ছে।
--অনুমতি-একাধিক-সংজ্ঞা
-z muldefs
সাধারণত যখন একটি প্রতীক একাধিকবার সংজ্ঞায়িত করা হয়, লিঙ্কার একটি মারাত্মক রিপোর্ট করবে
ত্রুটি. এই বিকল্পগুলি একাধিক সংজ্ঞার অনুমতি দেয় এবং প্রথম সংজ্ঞা ব্যবহার করা হবে।
--অনুমতি-শ্লিব-অনির্ধারিত
--না-অনুমতি-শ্লিব-অনির্ধারিত
শেয়ার্ড লাইব্রেরিতে অনির্ধারিত চিহ্নের অনুমতি দেয় বা অননুমোদিত করে। এই সুইচ অনুরূপ
--কোন-অনির্ধারিত এটি ব্যতীত এটি আচরণ নির্ধারণ করে যখন অনির্ধারিত চিহ্নগুলি থাকে
একটি নিয়মিত অবজেক্ট ফাইলের পরিবর্তে একটি ভাগ করা লাইব্রেরিতে। এটা কিভাবে প্রভাবিত করে না
নিয়মিত অবজেক্ট ফাইলগুলিতে অনির্ধারিত চিহ্নগুলি পরিচালনা করা হয়।
ডিফল্ট আচরণ হল রেফারেন্স করা কোনো অনির্ধারিত চিহ্নের জন্য ত্রুটি রিপোর্ট করা
শেয়ার্ড লাইব্রেরি যদি লিঙ্কারটি একটি এক্সিকিউটেবল তৈরি করতে ব্যবহার করা হয় তবে অনুমতি দেওয়ার জন্য
যদি লিঙ্কার একটি শেয়ার্ড লাইব্রেরি তৈরি করতে ব্যবহার করা হয়।
শেয়ার্ড লাইব্রেরিতে অনির্দিষ্ট চিহ্নের রেফারেন্সের অনুমতি দেওয়ার কারণ এতে উল্লেখ করা হয়েছে
লিঙ্কের সময় হল:
· লিঙ্কের সময় নির্দিষ্ট করা একটি শেয়ার্ড লাইব্রেরি একই রকম নাও হতে পারে
লোডের সময়ে উপলব্ধ, তাই প্রতীকটি আসলে লোডের সময়ে সমাধানযোগ্য হতে পারে।
· কিছু অপারেটিং সিস্টেম আছে, যেমন BeOS এবং HPPA, যেখানে অনির্ধারিত চিহ্ন রয়েছে
ভাগ করা লাইব্রেরি স্বাভাবিক।
উদাহরণ স্বরূপ BeOS কার্নেল নির্বাচন করার জন্য লোড সময়ে ভাগ করা লাইব্রেরি প্যাচ করে
যে ফাংশন বর্তমান আর্কিটেকচারের জন্য সবচেয়ে উপযুক্ত। এই
ব্যবহার করা হয়, উদাহরণস্বরূপ, গতিশীলভাবে একটি উপযুক্ত মেমসেট ফাংশন নির্বাচন করতে।
--কোন-অনির্ধারিত-সংস্করণ
সাধারণত যখন একটি প্রতীকের একটি অনির্ধারিত সংস্করণ থাকে, লিঙ্কার এটি উপেক্ষা করবে। এই
বিকল্পটি অনির্ধারিত সংস্করণ সহ চিহ্নগুলিকে অনুমতি দেয় না এবং একটি মারাত্মক ত্রুটি জারি করা হবে
পরিবর্তে.
--ডিফল্ট-সিমভার
রূপান্তরবিহীন রপ্তানি করা প্রতীকগুলির জন্য একটি ডিফল্ট প্রতীক সংস্করণ (সোনাম) তৈরি করুন এবং ব্যবহার করুন।
--ডিফল্ট-ইমপোর্টেড-সিমভার
আনভার্সনড ইম্পোর্ট করা চিহ্নের জন্য একটি ডিফল্ট প্রতীক সংস্করণ (সোনাম) তৈরি করুন এবং ব্যবহার করুন।
--না-সতর্কতা-অমিল
সাধারণত ld আপনি যদি ইনপুট ফাইলগুলিকে একসাথে লিঙ্ক করার চেষ্টা করেন তবে একটি ত্রুটি দেবে
কিছু কারণে অমিল, সম্ভবত কারণ তারা বিভিন্ন জন্য সংকলিত হয়েছে
প্রসেসর বা বিভিন্ন endiannesses জন্য. এই বিকল্পটি বলে ld যে এটা উচিত
নীরবে এই ধরনের সম্ভাব্য ত্রুটির অনুমতি দিন। এই বিকল্পটি শুধুমাত্র যত্ন সহ ব্যবহার করা উচিত, মধ্যে
ক্ষেত্রে যখন আপনি কিছু বিশেষ পদক্ষেপ নিয়েছেন যা নিশ্চিত করে যে লিঙ্কার ত্রুটিগুলি
অনুপযুক্ত
--না-সতর্কতা-অনুসন্ধান-অমিল
সাধারণত ld একটি লাইব্রেরির সময় এটি একটি বেমানান লাইব্রেরি খুঁজে পেলে একটি সতর্কতা দেবে
অনুসন্ধান এই বিকল্পটি সতর্কতাকে নীরব করে।
--নো-পুরো-আর্কাইভ
এর প্রভাব বন্ধ করুন --পুরো আর্কাইভ পরবর্তী সংরক্ষণাগার ফাইলের জন্য বিকল্প।
--noinhibit-exec
এক্সিকিউটেবল আউটপুট ফাইলটি যখনই ব্যবহারযোগ্য তখনই ধরে রাখুন। সাধারণত, লিঙ্কার
লিঙ্ক প্রক্রিয়া চলাকালীন ত্রুটির সম্মুখীন হলে একটি আউটপুট ফাইল তৈরি করবে না; এটা
একটি আউটপুট ফাইল না লিখে প্রস্থান করে যখন এটি যেকোন ত্রুটি ইস্যু করে।
-নোস্টডিলিব
শুধুমাত্র কমান্ড লাইনে স্পষ্টভাবে নির্দিষ্ট করা লাইব্রেরি ডিরেক্টরি অনুসন্ধান করুন। লাইব্রেরি
লিঙ্কার স্ক্রিপ্টে নির্দিষ্ট করা ডিরেক্টরি (লিঙ্কার স্ক্রিপ্ট সহ
কমান্ড লাইন) উপেক্ষা করা হয়।
--ফরম্যাট=আউটপুট ফরমেট
ld একাধিক ধরনের অবজেক্ট ফাইল সমর্থন করার জন্য কনফিগার করা যেতে পারে। যদি তোমার ld is
এই ভাবে কনফিগার করা, আপনি ব্যবহার করতে পারেন --ফরম্যাট এর জন্য বাইনারি বিন্যাস নির্দিষ্ট করার বিকল্প
আউটপুট অবজেক্ট ফাইল। এমনকি যখন ld বিকল্প বস্তুকে সমর্থন করার জন্য কনফিগার করা হয়েছে
বিন্যাসে, আপনাকে সাধারণত এটি নির্দিষ্ট করতে হবে না, যেমন ld উত্পাদন কনফিগার করা উচিত
ডিফল্ট আউটপুট বিন্যাস হিসাবে প্রতিটি মেশিনে সবচেয়ে সাধারণ বিন্যাস। আউটপুট ফরমেট ইহা একটি
টেক্সট স্ট্রিং, BFD লাইব্রেরি দ্বারা সমর্থিত একটি নির্দিষ্ট বিন্যাসের নাম। (আপনি পারেন
সঙ্গে উপলব্ধ বাইনারি বিন্যাস তালিকা objdump -i.) স্ক্রিপ্ট কমান্ড
"OUTPUT_FORMAT" আউটপুট বিন্যাসও নির্দিষ্ট করতে পারে, কিন্তু এই বিকল্পটি এটিকে ওভাররাইড করে।
-পাই
--পিক-নির্বাহযোগ্য
একটি স্বাধীন নির্বাহযোগ্য অবস্থান তৈরি করুন। এটি বর্তমানে শুধুমাত্র ELF-এ সমর্থিত
প্ল্যাটফর্ম অবস্থান স্বাধীন এক্সিকিউটেবলগুলি এতে ভাগ করা লাইব্রেরির মতো
OS যে ভার্চুয়াল ঠিকানার জন্য বেছে নেয় তাতে ডায়নামিক লিঙ্কার দ্বারা সেগুলিকে স্থানান্তরিত করা হয়
তাদের (যা আহ্বানের মধ্যে পরিবর্তিত হতে পারে)। স্বাভাবিক গতিশীলভাবে লিঙ্ক এক্সিকিউটেবল মত
সেগুলি কার্যকর করা যেতে পারে এবং এক্সিকিউটেবলে সংজ্ঞায়িত প্রতীকগুলিকে ওভাররাইড করা যাবে না
ভাগ করা লাইব্রেরি।
-qmagic
এই বিকল্পটি Linux সামঞ্জস্যের জন্য উপেক্ষা করা হয়েছে।
-কিউ এই বিকল্পটি SVR4 সামঞ্জস্যের জন্য উপেক্ষা করা হয়েছে৷
--আরাম
--না-বিশ্রাম
মেশিন নির্ভর প্রভাব সঙ্গে একটি বিকল্প. এই বিকল্পটি শুধুমাত্র কয়েকটিতে সমর্থিত
লক্ষ।
কিছু প্ল্যাটফর্মে --আরাম বিকল্প লক্ষ্য নির্দিষ্ট, বিশ্বব্যাপী অপ্টিমাইজেশান সঞ্চালন করে
এটি সম্ভব হয় যখন লিঙ্কার প্রোগ্রামে ঠিকানা সমাধান করে, যেমন
শিথিল ঠিকানা মোড, নতুন নির্দেশ সংশ্লেষণ, এর সংক্ষিপ্ত সংস্করণ নির্বাচন
বর্তমান নির্দেশাবলী, এবং ধ্রুবক মান সমন্বয়.
কিছু প্ল্যাটফর্মে এই লিঙ্ক টাইম গ্লোবাল অপ্টিমাইজেশানগুলি এর প্রতীকী ডিবাগিং করতে পারে
ফলে নির্বাহযোগ্য অসম্ভব। মাতসুশিতার ক্ষেত্রে এমনটাই জানা গেছে
MN10200 এবং MN10300 প্রসেসরের পরিবার।
প্ল্যাটফর্মে যেখানে এটি সমর্থিত নয়, --আরাম গৃহীত হয়, কিন্তু উপেক্ষা করা হয়।
প্ল্যাটফর্মে যেখানে --আরাম বিকল্প গৃহীত হয় --না-বিশ্রাম নিষ্ক্রিয় করতে ব্যবহার করা যেতে পারে
বিশিষ্ট সমূহ.
--রটেন-সিম্বল-ফাইল=ফাইলের নাম
রাখা কেবল ফাইলে তালিকাভুক্ত প্রতীকগুলি ফাইলের নাম, অন্য সব বাদ দিয়ে। ফাইলের নাম
প্রতি লাইনে একটি প্রতীক নাম সহ একটি ফ্ল্যাট ফাইল। এই বিকল্পটি বিশেষ করে
পরিবেশে উপযোগী (যেমন VxWorks) যেখানে একটি বড় গ্লোবাল সিম্বল টেবিল থাকে
রান-টাইম মেমরি সংরক্ষণ করার জন্য ধীরে ধীরে জমা হয়।
--ধারণ-চিহ্ন-ফাইল না না অনির্ধারিত চিহ্ন বা চিহ্নের জন্য প্রয়োজনীয় চিহ্ন বাতিল করুন
স্থানান্তর
আপনি শুধুমাত্র নির্দিষ্ট করতে পারেন --ধারণ-চিহ্ন-ফাইল একবার কমান্ড লাইনে। এটা ওভাররাইড করে -s
এবং -S.
-rpath=Dir
রানটাইম লাইব্রেরি অনুসন্ধান পাথে একটি ডিরেক্টরি যোগ করুন। এটি একটি ELF লিঙ্ক করার সময় ব্যবহৃত হয়
শেয়ার্ড অবজেক্টের সাথে এক্সিকিউটেবল। সব -আরপাথ আর্গুমেন্ট একত্রিত এবং পাস করা হয়
রানটাইম লিঙ্কার, যা রানটাইমে শেয়ার করা বস্তুগুলি সনাক্ত করতে তাদের ব্যবহার করে। দ্য -আরপাথ
শেয়ার্ড অবজেক্টের প্রয়োজন হয় এমন শেয়ার্ড অবজেক্টের লোকেশন করার সময়ও বিকল্প ব্যবহার করা হয়
স্পষ্টভাবে লিঙ্কে অন্তর্ভুক্ত; এর বর্ণনা দেখুন -rpath-লিংক বিকল্প। যদি
-আরপাথ একটি ELF এক্সিকিউটেবল, পরিবেশের বিষয়বস্তু লিঙ্ক করার সময় ব্যবহার করা হয় না
পরিবর্তনশীল "LD_RUN_PATH" ব্যবহার করা হবে যদি এটি সংজ্ঞায়িত করা হয়।
সার্জারির -আরপাথ অপশনটি SunOS এও ব্যবহার করা যেতে পারে। ডিফল্টরূপে, SunOS এ, লিঙ্কার হবে
একটি রানটাইম অনুসন্ধানের পথ তৈরি করুন -L অপশন দেওয়া আছে। যদি একটি -আরপাথ পছন্দ
ব্যবহার করা হয়, রানটাইম অনুসন্ধান পথটি একচেটিয়াভাবে ব্যবহার করে গঠিত হবে -আরপাথ বিকল্প,
উপেক্ষা করে -L বিকল্প জিসিসি ব্যবহার করার সময় এটি কার্যকর হতে পারে, যা অনেকগুলিকে যুক্ত করে -L
NFS মাউন্ট করা ফাইল সিস্টেমে থাকা বিকল্পগুলি।
অন্যান্য ELF লিঙ্কারের সাথে সামঞ্জস্যের জন্য, যদি -R অপশন একটি ডিরেক্টরি দ্বারা অনুসরণ করা হয়
নাম, একটি ফাইলের নামের পরিবর্তে, এটি হিসাবে গণ্য করা হয় -আরপাথ বিকল্প।
-rpath-link=Dir
ELF বা SunOS ব্যবহার করার সময়, একটি ভাগ করা লাইব্রেরির অন্যটির প্রয়োজন হতে পারে। এটি ঘটে যখন একটি
"ld -shared" লিঙ্কটি ইনপুট ফাইলগুলির মধ্যে একটি হিসাবে একটি ভাগ করা লাইব্রেরি অন্তর্ভুক্ত করে।
যখন লিঙ্কার এমন একটি নির্ভরতার সম্মুখীন হয় যখন একটি নন-শেয়ারড, অ-রিলোকেটেবল করার সময়
লিঙ্ক, এটি স্বয়ংক্রিয়ভাবে প্রয়োজনীয় ভাগ করা লাইব্রেরি সনাক্ত করার চেষ্টা করবে এবং এটি অন্তর্ভুক্ত করবে
লিঙ্কে, যদি এটি স্পষ্টভাবে অন্তর্ভুক্ত না হয়। এমন একটি ক্ষেত্রে, দ -rpath-লিংক পছন্দ
অনুসন্ধান করার জন্য ডিরেক্টরির প্রথম সেট নির্দিষ্ট করে। দ্য -rpath-লিংক বিকল্প নির্দিষ্ট করতে পারে
ডিরেক্টরির নামের একটি ক্রম হয় দ্বারা পৃথক করা নামের একটি তালিকা উল্লেখ করে
কোলন, বা একাধিকবার প্রদর্শিত দ্বারা।
এই বিকল্পটি সতর্কতার সাথে ব্যবহার করা উচিত কারণ এটি অনুসন্ধানের পথটিকে ওভাররাইড করে
একটি ভাগ করা লাইব্রেরিতে কঠিন কম্পাইল করা হয়েছে. এই ধরনের ক্ষেত্রে এটি ব্যবহার করা সম্ভব
রানটাইম লিঙ্কারের চেয়ে অনিচ্ছাকৃতভাবে একটি ভিন্ন অনুসন্ধান পথ।
লিঙ্কার প্রয়োজনীয় ভাগ করা লাইব্রেরিগুলি সনাক্ত করতে নিম্নলিখিত অনুসন্ধান পথগুলি ব্যবহার করে:
1. দ্বারা নির্দিষ্ট কোনো ডিরেক্টরি -rpath-লিংক অপশন।
2. দ্বারা নির্দিষ্ট কোনো ডিরেক্টরি -আরপাথ বিকল্প মধ্যে পার্থক্য -আরপাথ এবং
-rpath-লিংক যে ডিরেক্টরি দ্বারা নির্দিষ্ট করা হয় -আরপাথ বিকল্প অন্তর্ভুক্ত করা হয়
এক্সিকিউটেবল এবং রানটাইমে ব্যবহৃত হয়, যেখানে -rpath-লিংক বিকল্প শুধুমাত্র কার্যকর
লিঙ্কের সময়। অনুসন্ধান করা হচ্ছে -আরপাথ এই ভাবে শুধুমাত্র নেটিভ লিঙ্কার দ্বারা সমর্থিত এবং
ক্রস লিঙ্কার যা এর সাথে কনফিগার করা হয়েছে --with-sysroot বিকল্প।
3. একটি ELF সিস্টেমে, নেটিভ লিঙ্কারদের জন্য, যদি -আরপাথ এবং -rpath-লিংক বিকল্প ছিল
ব্যবহার করা হয়নি, পরিবেশ পরিবর্তনশীল "LD_RUN_PATH" এর বিষয়বস্তু অনুসন্ধান করুন।
4. SunOS এ, যদি -আরপাথ বিকল্প ব্যবহার করা হয়নি, নির্দিষ্ট কোনো ডিরেক্টরি অনুসন্ধান করুন
ব্যবহার -L অপশন।
5. একটি নেটিভ লিঙ্কারের জন্য, পরিবেশ পরিবর্তনশীলের বিষয়বস্তু অনুসন্ধান করুন
"LD_LIBRARY_PATH"।
6. একটি নেটিভ ELF লিঙ্কারের জন্য, শেয়ার করা "DT_RUNPATH" বা "DT_RPATH"-এর ডিরেক্টরিগুলি
লাইব্রেরি এটির দ্বারা প্রয়োজনীয় ভাগ করা লাইব্রেরিগুলির জন্য অনুসন্ধান করা হয়। "DT_RPATH" এন্ট্রিগুলি হল৷
উপেক্ষা করা হয় যদি "DT_RUNPATH" এন্ট্রি বিদ্যমান থাকে।
7. ডিফল্ট ডিরেক্টরি, সাধারণত / lib এবং / Usr / lib.
8. একটি ELF সিস্টেমে একটি নেটিভ লিঙ্কারের জন্য, যদি ফাইলটি /etc/ld.so.conf বিদ্যমান, তালিকা
যে ফাইলে পাওয়া ডিরেক্টরিগুলির.
যদি প্রয়োজনীয় ভাগ করা লাইব্রেরি পাওয়া না যায়, লিঙ্কার একটি সতর্কতা জারি করবে এবং
লিঙ্ক দিয়ে চালিয়ে যান।
- শেয়ার করা হয়েছে
- শেয়ারযোগ্য
একটি শেয়ার্ড লাইব্রেরি তৈরি করুন। এটি বর্তমানে শুধুমাত্র ELF, XCOFF এবং SunOS-এ সমর্থিত
প্ল্যাটফর্ম SunOS-এ, লিঙ্কার স্বয়ংক্রিয়ভাবে একটি শেয়ার করা লাইব্রেরি তৈরি করবে যদি -e
বিকল্পটি ব্যবহার করা হয় না এবং লিঙ্কটিতে অনির্ধারিত চিহ্ন রয়েছে।
--সাধারণ-সাধারণ
--সর্ট-সাধারণ = আরোহী
--সর্ট-সাধারণ = অবরোহী
এই বিকল্পটি বলে ld সাধারণ চিহ্নগুলিকে ঊর্ধ্বে প্রান্তিককরণের মাধ্যমে বাছাই করতে
অবরোহ ক্রম যখন এটি তাদের উপযুক্ত আউটপুট বিভাগে রাখে। প্রতীক
বিবেচিত প্রান্তিককরণগুলি হল ষোল-বাইট বা বড়, আট-বাইট, চার-বাইট, দুই-বাইট এবং
এক বাইট এটি প্রান্তিককরণের সীমাবদ্ধতার কারণে প্রতীকগুলির মধ্যে ফাঁক রোধ করার জন্য। যদি না
বাছাই ক্রম নির্দিষ্ট করা হয়, তারপর অবতরণ ক্রম ধরে নেওয়া হয়।
--সর্ট-বিভাগ = নাম
এই বিকল্পটি লিঙ্কারের সমস্ত ওয়াইল্ডকার্ড বিভাগের প্যাটার্নগুলিতে "SORT_BY_NAME" প্রয়োগ করবে৷
লিপি.
--সর্ট-বিভাগ = প্রান্তিককরণ
এই বিকল্পটি "SORT_BY_ALIGNMENT" এর সমস্ত ওয়াইল্ডকার্ড বিভাগের প্যাটার্নগুলিতে প্রয়োগ করবে
লিঙ্কার স্ক্রিপ্ট।
-- ফাইল দ্বারা বিভক্ত[=আয়তন]
অনুরূপ, একই, সমতুল্য -- বিভক্ত-দ্বারা-রিলোক কিন্তু প্রতিটি ইনপুট ফাইলের জন্য একটি নতুন আউটপুট বিভাগ তৈরি করে যখন
আয়তন উপনিত. আয়তন যদি না দেওয়া হয় তবে 1 এর আকারে ডিফল্ট।
-- রিলোক দ্বারা বিভক্ত[=গণনা]
আউটপুট ফাইলে অতিরিক্ত বিভাগ তৈরি করার চেষ্টা করে যাতে কোনো একক আউটপুট বিভাগে না থাকে
ফাইলের চেয়ে বেশি রয়েছে গণনা স্থানান্তর বিশাল উৎপন্ন করার সময় এটি দরকারী
COFF অবজেক্টের সাথে নির্দিষ্ট রিয়েল টাইম কার্নেলে ডাউনলোড করার জন্য রিলোকেটেবল ফাইল
ফাইলের বিন্যাস; যেহেতু COFF এককভাবে 65535 টির বেশি স্থানান্তরের প্রতিনিধিত্ব করতে পারে না
অধ্যায়. মনে রাখবেন যে এটি অবজেক্ট ফাইল ফরম্যাটের সাথে কাজ করতে ব্যর্থ হবে যা করে না
নির্বিচারে বিভাগ সমর্থন করে। লিঙ্কার পৃথক ইনপুট বিভাগগুলিকে বিভক্ত করবে না
পুনরায় বিতরণের জন্য, তাই যদি একটি একক ইনপুট বিভাগে এর থেকে বেশি থাকে গণনা স্থানান্তর
একটি আউটপুট বিভাগে অনেকগুলি স্থানান্তর থাকবে। গণনা এর একটি মান ডিফল্ট
32768.
-- পরিসংখ্যান
লিংকারের ক্রিয়াকলাপ সম্পর্কে পরিসংখ্যান গণনা করুন এবং প্রদর্শন করুন, যেমন সম্পাদন
সময় এবং মেমরি ব্যবহার।
-সাইরুট =ডিরেক্টরি
ব্যবহার ডিরেক্টরি sysroot-এর অবস্থান হিসাবে, কনফিগার-টাইম ডিফল্ট ওভাররাইড করে।
এই বিকল্পটি শুধুমাত্র লিঙ্কার দ্বারা সমর্থিত যা ব্যবহার করে কনফিগার করা হয়েছে --with-sysroot.
-- ঐতিহ্যবাহী বিন্যাস
কিছু লক্ষ্যের জন্য, এর আউটপুট ld কিছু আউটপুট থেকে কিছু উপায়ে ভিন্ন
বিদ্যমান লিঙ্কার। এই সুইচ অনুরোধ ld পরিবর্তে ঐতিহ্যগত বিন্যাস ব্যবহার করতে.
উদাহরণস্বরূপ, SunOS এ, ld প্রতীক স্ট্রিং টেবিলে ডুপ্লিকেট এন্ট্রি একত্রিত করে। এই
সম্পূর্ণ ডিবাগিং তথ্য সহ একটি আউটপুট ফাইলের আকার 30 এর বেশি কমাতে পারে
শতাংশ. দুর্ভাগ্যবশত, SunOS "dbx" প্রোগ্রাম ফলাফল প্রোগ্রাম পড়তে পারে না
("gdb" এর কোন সমস্যা নেই)। দ্য -- ঐতিহ্যবাহী বিন্যাস সুইচ বলে ld একত্রিত না করা
ডুপ্লিকেট এন্ট্রি।
--বিভাগ-শুরু=বিভাগের নাম=সংস্থা
প্রদত্ত পরম ঠিকানায় আউটপুট ফাইলের একটি বিভাগ সনাক্ত করুন সংস্থা. আপনি ব্যবহার করতে পারেন
কমান্ডে একাধিক বিভাগ সনাক্ত করতে এই বিকল্পটি যতবার প্রয়োজন
লাইন। সংস্থা একটি একক হেক্সাডেসিমেল পূর্ণসংখ্যা হতে হবে; অন্যান্য লিঙ্কারের সাথে সামঞ্জস্যের জন্য,
আপনি নেতৃস্থানীয় বাদ দিতে পারেন 0x সাধারণত হেক্সাডেসিমেল মানের সাথে যুক্ত। বিঃদ্রঃ: সেখানে
মধ্যে কোন সাদা স্থান থাকা উচিত নয় বিভাগের নাম, সমান চিহ্ন ("="), এবং সংস্থা.
-টিবিএসএস =সংস্থা
-Tdata=সংস্থা
-টেক্সট=সংস্থা
একই রকম --বিভাগ-শুরু, ".bss", ".data" বা ".text" হিসেবে বিভাগের নাম.
-টেক্সট-সেগমেন্ট=সংস্থা
একটি ELF এক্সিকিউটেবল তৈরি করার সময়, এটি পাঠ্যের প্রথম বাইটের ঠিকানা সেট করবে
সেগমেন্ট।
-ট্রোডাটা-সেগমেন্ট=সংস্থা
একটি টার্গেটের জন্য একটি ELF এক্সিকিউটেবল বা শেয়ার করা অবজেক্ট তৈরি করার সময় যেখানে শুধুমাত্র পঠনযোগ্য ডেটা
এক্সিকিউটেবল টেক্সট থেকে আলাদা নিজস্ব সেগমেন্টে, এটি এর ঠিকানা সেট করবে
শুধুমাত্র পঠনযোগ্য ডেটা বিভাগের প্রথম বাইট।
-Tldata-সেগমেন্ট=সংস্থা
x86-64 মিডিয়াম মেমরি মডেলের জন্য একটি ELF এক্সিকিউটেবল বা শেয়ার করা অবজেক্ট তৈরি করার সময়, এটি
ldata সেগমেন্টের প্রথম বাইটের ঠিকানা সেট করবে।
--অমীমাংসিত-প্রতীক=পদ্ধতি
অমীমাংসিত প্রতীকগুলি কীভাবে পরিচালনা করবেন তা নির্ধারণ করুন। এর জন্য চারটি সম্ভাব্য মান রয়েছে
পদ্ধতি:
সবগুলো উপেক্ষা করুন
কোনো অমীমাংসিত প্রতীক রিপোর্ট করবেন না.
রিপোর্ট-সমস্ত
সব অমীমাংসিত প্রতীক রিপোর্ট করুন. এটি ডিফল্ট।
অবজেক্ট-ফাইলের মধ্যে উপেক্ষা করুন
শেয়ার্ড লাইব্রেরিতে থাকা অমীমাংসিত চিহ্নগুলির প্রতিবেদন করুন, কিন্তু সেগুলিকে উপেক্ষা করুন৷
যদি তারা নিয়মিত অবজেক্ট ফাইল থেকে আসে।
উপেক্ষা-ইন-শেয়ারড-লিবস
নিয়মিত অবজেক্ট ফাইল থেকে আসা অমীমাংসিত চিহ্নগুলি রিপোর্ট করুন, কিন্তু যদি সেগুলি উপেক্ষা করুন
তারা ভাগ করা লাইব্রেরি থেকে আসে। একটি গতিশীল তৈরি করার সময় এটি কার্যকর হতে পারে
বাইনারি এবং এটি জানা যায় যে সমস্ত ভাগ করা লাইব্রেরি যে এটি উল্লেখ করা উচিত
লিঙ্কারের কমান্ড লাইনে অন্তর্ভুক্ত করা হয়।
ভাগ করা লাইব্রেরিগুলির জন্য তাদের নিজস্ব আচরণও দ্বারা নিয়ন্ত্রিত হতে পারে
--[না-]অনুমতি-শ্লিব-অনির্ধারিত বিকল্প।
সাধারণত লিঙ্কার প্রতিটি রিপোর্ট করা অমীমাংসিত প্রতীকের জন্য একটি ত্রুটি বার্তা তৈরি করবে
কিন্তু বিকল্প --সতর্ক-অমীমাংসিত-প্রতীক এটি একটি সতর্কতায় পরিবর্তন করতে পারেন।
--dll-ভার্বোস
--ভার্বোস[=NUMBER টি]
এর জন্য সংস্করণ নম্বর প্রদর্শন করুন ld এবং সমর্থিত লিঙ্কার ইমুলেশন তালিকা করুন। প্রদর্শন
কোন ইনপুট ফাইল খোলা যাবে এবং করা যাবে না। দ্বারা ব্যবহৃত লিঙ্কার স্ক্রিপ্ট প্রদর্শন
লিঙ্কার ঐচ্ছিক হলে NUMBER টি আর্গুমেন্ট > 1, প্লাগইন সিম্বল স্ট্যাটাসও থাকবে
প্রদর্শিত
--সংস্করণ-স্ক্রিপ্ট=সংস্করণ-স্ক্রিপ্ট ফাইল
লিঙ্কারে একটি সংস্করণ স্ক্রিপ্টের নাম উল্লেখ করুন। এটি সাধারণত ব্যবহৃত হয় যখন
সংস্করণ সম্পর্কে অতিরিক্ত তথ্য নির্দিষ্ট করতে ভাগ করা লাইব্রেরি তৈরি করা
লাইব্রেরির জন্য অনুক্রম তৈরি করা হচ্ছে। এই বিকল্পটি শুধুমাত্র ELF-এ সম্পূর্ণরূপে সমর্থিত
শেয়ার্ড লাইব্রেরি সমর্থন করে এমন প্ল্যাটফর্ম; দেখা সংস্করণ. এটি আংশিকভাবে সমর্থিত
PE প্ল্যাটফর্ম, যা স্বয়ংক্রিয়-রপ্তানিতে প্রতীক দৃশ্যমানতা ফিল্টার করতে সংস্করণ স্ক্রিপ্ট ব্যবহার করতে পারে
মোড: কোনো চিহ্ন চিহ্নিত স্থানীয় সংস্করণ স্ক্রিপ্ট রপ্তানি করা হবে না.
--সতর্ক-সাধারণ
একটি সাধারণ চিহ্ন অন্য একটি সাধারণ প্রতীকের সাথে বা একটি প্রতীকের সাথে মিলিত হলে সতর্ক করুন
সংজ্ঞা ইউনিক্স লিঙ্কাররা এটিকে কিছুটা ঢালু অনুশীলনের অনুমতি দেয়, তবে কিছুতে লিঙ্কার
অন্যান্য অপারেটিং সিস্টেম তা করে না। এই বিকল্পটি আপনাকে সম্ভাব্য সমস্যাগুলি খুঁজে পেতে অনুমতি দেয়
বৈশ্বিক প্রতীক একত্রিত থেকে. দুর্ভাগ্যবশত, কিছু সি লাইব্রেরি এই অনুশীলন ব্যবহার করে, তাই
আপনি লাইব্রেরির পাশাপাশি আপনার প্রোগ্রামগুলিতে প্রতীক সম্পর্কে কিছু সতর্কতা পেতে পারেন।
তিন ধরনের গ্লোবাল চিহ্ন রয়েছে, এখানে C উদাহরণ দ্বারা চিত্রিত করা হয়েছে:
কোন int i = 1;
একটি সংজ্ঞা, যা আউটপুট ফাইলের প্রারম্ভিক ডেটা বিভাগে যায়।
extern কোন int i;
একটি অনির্ধারিত রেফারেন্স, যা স্থান বরাদ্দ করে না। একটি হতে হবে
সংজ্ঞা বা কোথাও পরিবর্তনশীল জন্য একটি সাধারণ প্রতীক.
কোন int i;
একটি সাধারণ প্রতীক। যদি একটি পরিবর্তনশীলের জন্য শুধুমাত্র (এক বা একাধিক) সাধারণ চিহ্ন থাকে,
এটি আউটপুট ফাইলের অপ্রবর্তিত ডেটা এলাকায় যায়। লিঙ্কার একত্রিত হয়
একই ভেরিয়েবলের জন্য একাধিক সাধারণ চিহ্ন একটি একক প্রতীকে। যদি তারা
বিভিন্ন আকারের, এটি সবচেয়ে বড় আকার বাছাই করে। লিঙ্কার একটি সাধারণ প্রতীকে পরিণত হয়
একটি ঘোষণার মধ্যে, যদি একই পরিবর্তনশীলের একটি সংজ্ঞা থাকে।
সার্জারির --সতর্ক-সাধারণ বিকল্পটি পাঁচ ধরণের সতর্কতা তৈরি করতে পারে। প্রতিটি সতর্কতা নিয়ে গঠিত
লাইনের একটি জোড়া: প্রথমটি এইমাত্র সম্মুখীন হওয়া প্রতীকটিকে বর্ণনা করে এবং দ্বিতীয়টি
একই নামের পূর্ববর্তী চিহ্নটি বর্ণনা করে। একটি বা দুটি উভয়
প্রতীক একটি সাধারণ প্রতীক হবে।
1. একটি সাধারণ চিহ্নকে একটি রেফারেন্সে পরিণত করা, কারণ ইতিমধ্যেই একটি সংজ্ঞা রয়েছে৷
প্রতীকের জন্য।
( ): warning: common of ` '
সংজ্ঞা দ্বারা ওভাররাইড করা হয়েছে
( ): সতর্কতা: এখানে সংজ্ঞায়িত
2. একটি সাধারণ প্রতীককে একটি রেফারেন্সে পরিণত করা, কারণ এর জন্য পরবর্তী সংজ্ঞা৷
প্রতীক সম্মুখীন হয়. এটি পূর্ববর্তী ক্ষেত্রে একই, যে ছাড়া
প্রতীক একটি ভিন্ন ক্রমে সম্মুখীন হয়.
( ): সতর্কতা: ` এর সংজ্ঞা '
ওভাররাইডিং সাধারণ
( ): সতর্কতা: সাধারণ এখানে
3. পূর্ববর্তী একই আকারের সাধারণ প্রতীকের সাথে একটি সাধারণ প্রতীক মার্জ করা।
( ): সতর্কতা: একাধিক সাধারণ
এর ` '
( ): সতর্কতা: পূর্ববর্তী সাধারণ এখানে
4. পূর্ববর্তী বৃহত্তর সাধারণ প্রতীকের সাথে একটি সাধারণ চিহ্ন একত্রিত করা।
( ): warning: common of ` '
বড় সাধারণ দ্বারা ওভাররাইড করা হয়েছে
( ): সতর্কতা: বড় সাধারণ এখানে
5. পূর্ববর্তী ছোট সাধারণ প্রতীকের সাথে একটি সাধারণ চিহ্ন একত্রিত করা। একই ধরনের
পূর্ববর্তী ক্ষেত্রে হিসাবে, প্রতীক একটি ভিন্ন সম্মুখীন হয় যে ছাড়া
অর্ডার।
( ): warning: common of ` '
ওভাররাইডিং ছোট সাধারণ
( ): সতর্কতা: ছোট সাধারণ এখানে
--সতর্ক-নির্মাতা
কোনো গ্লোবাল কনস্ট্রাক্টর ব্যবহার করা হলে সতর্ক করুন। এটি শুধুমাত্র কয়েকটি অবজেক্ট ফাইলের জন্য দরকারী
বিন্যাস COFF বা ELF এর মত বিন্যাসের জন্য, লিঙ্কার গ্লোবাল ব্যবহার সনাক্ত করতে পারে না
নির্মাণকারী
--ওয়ার্ন-মাল্টিপল-জিপি
আউটপুট ফাইলে একাধিক গ্লোবাল পয়েন্টার মান প্রয়োজন হলে সতর্ক করুন। এই শুধুমাত্র
নির্দিষ্ট প্রসেসরের জন্য অর্থবহ, যেমন আলফা। বিশেষ করে, কিছু প্রসেসর
একটি বিশেষ বিভাগে বড়-মূল্যবান ধ্রুবক রাখুন। একটি বিশেষ নিবন্ধন (বিশ্বব্যাপী
পয়েন্টার) এই বিভাগের মাঝখানে পয়েন্ট করে, যাতে ধ্রুবকগুলি লোড করা যায়
একটি বেস-রেজিস্টার আপেক্ষিক ঠিকানা মোডের মাধ্যমে দক্ষতার সাথে। যেহেতু বেসে অফসেট-
রেজিস্টার আপেক্ষিক মোড স্থির এবং অপেক্ষাকৃত ছোট (যেমন, 16 বিট), এটি সীমাবদ্ধ করে
ধ্রুবক পুলের সর্বোচ্চ আকার। এইভাবে, বড় প্রোগ্রামে, এটি প্রায়ই প্রয়োজন
সমস্ত সম্ভাব্য সমাধান করতে সক্ষম হওয়ার জন্য একাধিক গ্লোবাল পয়েন্টার মান ব্যবহার করুন
ধ্রুবক এই বিকল্পটি যখনই এই ক্ষেত্রে ঘটবে তখনই একটি সতর্কতা জারি করা হবে৷
--একবার সতর্ক করুন
প্রতিটি অনির্ধারিত চিহ্নের জন্য শুধুমাত্র একবার সতর্ক করুন, প্রতি মডিউলে একবারের পরিবর্তে যা নির্দেশ করে
এটা.
--সতর্ক-বিভাগ-সারিবদ্ধ
প্রান্তিককরণের কারণে আউটপুট বিভাগের ঠিকানা পরিবর্তন করা হলে সতর্ক করুন। সাধারণত,
প্রান্তিককরণ একটি ইনপুট বিভাগ দ্বারা সেট করা হবে। ঠিকানা পরিবর্তন হলেই হবে
স্পষ্টভাবে উল্লেখ করা হয়নি; অর্থাৎ, যদি "SECTIONS" কমান্ড একটি শুরু নির্দিষ্ট না করে
বিভাগের জন্য ঠিকানা।
--ওয়ার্ন-শেয়ারড-টেক্সট্রেল
যদি লিঙ্কার একটি ভাগ করা বস্তুতে একটি DT_TEXTREL যোগ করে তাহলে সতর্ক করুন৷
--সতর্ক-বিকল্প-এমন
কোনো বস্তুর বিকল্প ELF মেশিন কোড থাকলে সতর্ক করুন।
--সতর্ক-অমীমাংসিত-প্রতীক
যদি লিঙ্কার একটি অমীমাংসিত প্রতীক রিপোর্ট করতে যাচ্ছে (বিকল্পটি দেখুন
--অমীমাংসিত-প্রতীক) এটি সাধারণত একটি ত্রুটি তৈরি করবে। এই বিকল্প এটা তোলে
পরিবর্তে একটি সতর্কতা তৈরি করুন।
--ত্রুটি-অমীমাংসিত-প্রতীক
এটি রিপোর্ট করার সময় লিঙ্কারের ত্রুটি তৈরি করার ডিফল্ট আচরণ পুনরুদ্ধার করে
অমীমাংসিত প্রতীক।
--পুরো আর্কাইভ
কমান্ড লাইনের পরে উল্লিখিত প্রতিটি সংরক্ষণাগারের জন্য --পুরো আর্কাইভ বিকল্প,
সার্চ করার পরিবর্তে লিঙ্কের আর্কাইভে প্রতিটি অবজেক্ট ফাইল অন্তর্ভুক্ত করুন
প্রয়োজনীয় বস্তু ফাইলের জন্য সংরক্ষণাগার. এটি সাধারণত একটি সংরক্ষণাগার ফাইল চালু করতে ব্যবহৃত হয়
একটি ভাগ করা লাইব্রেরিতে, প্রতিটি বস্তুকে ফলস্বরূপ ভাগ করা অংশে অন্তর্ভুক্ত করতে বাধ্য করে
লাইব্রেরি এই বিকল্পটি একাধিকবার ব্যবহার করা যেতে পারে।
জিসিসি থেকে এই বিকল্পটি ব্যবহার করার সময় দুটি নোট: প্রথমত, জিসিসি এই বিকল্পটি সম্পর্কে জানে না,
তাই আপনাকে ব্যবহার করতে হবে -Wl, -পুরো-আর্কাইভ. দ্বিতীয়ত, ব্যবহার করতে ভুলবেন না
-Wl,-নো-পুরো-আর্কাইভ আপনার সংরক্ষণাগার তালিকার পরে, কারণ gcc তার নিজস্ব তালিকা যোগ করবে
আপনার লিঙ্কে আর্কাইভের এবং আপনি এই পতাকাটিকেও প্রভাবিত করতে চান না।
-- মোড়ানো=প্রতীক
জন্য একটি wrapper ফাংশন ব্যবহার করুন প্রতীক. কোন অনির্ধারিত রেফারেন্স প্রতীক সমাধান করা হবে
মোড়ানো_প্রতীক". "__real_ এর কোনো অনির্ধারিত রেফারেন্সপ্রতীক" সমাধান করা হবে
প্রতীক.
এটি একটি সিস্টেম ফাংশনের জন্য একটি মোড়ক প্রদান করতে ব্যবহার করা যেতে পারে। মোড়ক ফাংশন
বলা উচিত "__wrap_প্রতীক". যদি এটি সিস্টেম ফাংশন কল করতে চায়, এটা করা উচিত
কল করুন "__বাস্তব_প্রতীক".
এখানে একটি তুচ্ছ উদাহরণ:
অকার্যকর *
__wrap_malloc (size_t c)
{
printf ("malloc %zu\n" দিয়ে ডাকা হয়, c);
রিটার্ন __real_malloc (c);
}
আপনি এই ফাইল ব্যবহার করে অন্য কোড লিঙ্ক যদি -- মোড়ানো malloc, তারপর সব "malloc" কল
পরিবর্তে ফাংশনটিকে "__wrap_malloc" কল করবে। "__real_malloc"-এ কল
"__wrap_malloc" আসল "malloc" ফাংশনকে কল করবে।
আপনি একটি "__real_malloc" ফাংশনও প্রদান করতে চাইতে পারেন, যাতে লিঙ্কগুলি ছাড়াই
-- মোড়ানো বিকল্প সফল হবে। আপনি যদি এটি করেন, তাহলে আপনার সংজ্ঞা দেওয়া উচিত নয়
"__real_malloc" একই ফাইলে "__wrap_malloc"; যদি আপনি করেন, সংযোজনকারী হতে পারে
লিঙ্কারের "malloc" এ মোড়ানোর সুযোগ পাওয়ার আগে কলটি সমাধান করুন।
--eh-ফ্রেম-এইচডিআর
".eh_frame_hdr" বিভাগ এবং ELF "PT_GNU_EH_FRAME" সেগমেন্ট হেডার তৈরির অনুরোধ করুন।
--no-ld-উত্পন্ন-আনওয়াইন্ড-তথ্য
লিঙ্কার জেনারেটেড কোড বিভাগগুলির জন্য ".eh_frame" আনওয়াইন্ড ইনফো তৈরির অনুরোধ করুন
পিএলটি লিঙ্কার জেনারেটেড আনওয়াইন্ড তথ্য সমর্থিত হলে এই বিকল্পটি ডিফল্টরূপে চালু থাকে।
--enable-new-dtags
--অক্ষম-নতুন-ডিট্যাগ
এই লিঙ্কারটি ELF-তে নতুন ডায়নামিক ট্যাগ তৈরি করতে পারে। কিন্তু পুরানো ELF সিস্টেম নাও হতে পারে
তাদেরকে বুঝো. যদি আপনি উল্লেখ করেন --enable-new-dtags, নতুন ডাইনামিক ট্যাগ হবে
প্রয়োজন অনুযায়ী তৈরি করা হবে এবং পুরনো ডায়নামিক ট্যাগ বাদ দেওয়া হবে। যদি আপনি উল্লেখ করেন
--অক্ষম-নতুন-ডিট্যাগ, কোন নতুন ডাইনামিক ট্যাগ তৈরি করা হবে না। ডিফল্টরূপে, নতুন গতিশীল
ট্যাগ তৈরি করা হয় না। মনে রাখবেন যে এই বিকল্পগুলি শুধুমাত্র ELF সিস্টেমের জন্য উপলব্ধ।
--হ্যাশ-সাইজ=সংখ্যা
লিঙ্কারের হ্যাশ টেবিলের ডিফল্ট আকার একটি প্রাইম সংখ্যার কাছাকাছি সেট করুন সংখ্যা.
এই মান বাড়ানোর ফলে লিঙ্কারকে এটি সম্পাদন করতে যে সময় লাগে তা কমাতে পারে
কাজগুলি, লিঙ্কারের মেমরির প্রয়োজনীয়তা বাড়ানোর খরচে। একইভাবে
এই মান হ্রাস করা গতির ব্যয়ে মেমরির প্রয়োজনীয়তা হ্রাস করতে পারে।
--হ্যাশ-স্টাইল=শৈলী
লিঙ্কারের হ্যাশ টেবিলের ধরন সেট করুন। শৈলী ক্লাসিক ELF এর জন্য হয় "sysv" হতে পারে
".হ্যাশ" বিভাগ, নতুন শৈলীর জন্য "gnu" GNU ".gnu.hash" বিভাগ বা উভয়ের জন্য "উভয়"
ক্লাসিক ELF ".hash" এবং নতুন স্টাইলের GNU ".gnu.hash" হ্যাশ টেবিল। ডিফল্ট হল "sysv"।
--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
ELF প্ল্যাটফর্মগুলিতে, এই বিকল্পগুলি কীভাবে DWARF ডিবাগ বিভাগগুলি ব্যবহার করে সংকুচিত হয় তা নিয়ন্ত্রণ করে
zlib --compress-debug-sections=none DWARF ডিবাগ বিভাগগুলিকে সংকুচিত করে না।
--compress-debug-sections=zlib-gnu DWARF ডিবাগ বিভাগ সংকুচিত করে এবং ডিবাগের নাম পরিবর্তন করে
বিভাগের নাম দিয়ে শুরু করতে হবে .zdebug পরিবর্তে ডিবাগ. --compress-debug-sections=zlib
এবং --compress-debug-sections=zlib-gabi এর সাথে DWARF ডিবাগ বিভাগগুলি সংকুচিত করুন
ELF ABI থেকে SHF_COMPRESSED। ডিফল্ট আচরণ এর উপর নির্ভর করে পরিবর্তিত হয়
টার্গেট জড়িত এবং টুলচেইন তৈরি করতে ব্যবহৃত কনফিগার বিকল্পগুলি। ডিফল্ট
লিঙ্কারের থেকে আউটপুট পরীক্ষা করে নির্ধারণ করা যেতে পারে --help বিকল্প।
--কমাও-মেমরি-ওভারহেডস
এই বিকল্পটি ld রানটাইমে মেমরির প্রয়োজনীয়তা হ্রাস করে, লিঙ্ক করার খরচে
গতি. লিঙ্ক ম্যাপ ফাইলের জন্য পুরানো O(n^2) অ্যালগরিদম নির্বাচন করার জন্য এটি চালু করা হয়েছিল
প্রজন্ম, নতুন O(n) অ্যালগরিদমের পরিবর্তে যা প্রায় 40% বেশি মেমরি ব্যবহার করে
প্রতীক স্টোরেজ।
সুইচের আরেকটি প্রভাব হল ডিফল্ট হ্যাশ টেবিলের আকার 1021 এ সেট করা, যা
আবার লিঙ্কারের রান টাইম দীর্ঘ করার খরচে মেমরি সংরক্ষণ করে। এই কাজ করা হয় না
তবে যদি --হ্যাশ-আকার সুইচ ব্যবহার করা হয়েছে।
সার্জারির --কমাও-মেমরি-ওভারহেডস এছাড়াও অন্যান্য ট্রেডঅফ সক্ষম করতে সুইচ ব্যবহার করা যেতে পারে
লিঙ্কারের ভবিষ্যত সংস্করণ।
--বিল্ড-আইডি
--বিল্ড-আইডি=শৈলী
একটি ".note.gnu.build-id" ELF নোট বিভাগ বা একটি ".buildid" COFF তৈরির অনুরোধ করুন
অধ্যায়. নোটের বিষয়বস্তু এই লিঙ্ক করা ফাইলটিকে চিহ্নিত করে অনন্য বিট।
শৈলী 128 র্যান্ডম বিট ব্যবহার করতে "uuid" হতে পারে, একটি 1-বিট SHA160 হ্যাশ ব্যবহার করতে "sha1" হতে পারে
আউটপুট বিষয়বস্তুর আদর্শিক অংশ, "md5" একটি 128-বিট MD5 হ্যাশ ব্যবহার করতে
আউটপুট বিষয়বস্তুর আদর্শিক অংশ, বা "0xহেক্সস্ট্রিং" একটি নির্বাচিত বিট স্ট্রিং ব্যবহার করতে
হেক্সাডেসিমেল সংখ্যার একটি জোড় সংখ্যা হিসাবে নির্দিষ্ট করা হয়েছে ("-" এবং ":" অক্ষরের মধ্যে
অঙ্ক জোড়া উপেক্ষা করা হয়)। যদি শৈলী বাদ দেওয়া হয়, "sha1" ব্যবহার করা হয়।
"md5" এবং "sha1" শৈলী একটি শনাক্তকারী তৈরি করে যা একটিতে সর্বদা একই থাকে
অভিন্ন আউটপুট ফাইল, তবে সমস্ত অ-পরিচিত আউটপুট ফাইলের মধ্যে অনন্য হবে। এটাই
ফাইলের বিষয়বস্তুর জন্য একটি চেকসাম হিসাবে তুলনা করার উদ্দেশ্যে নয়। একটি লিঙ্ক ফাইল হতে পারে
পরবর্তীতে অন্যান্য সরঞ্জাম দ্বারা পরিবর্তন করা হবে, কিন্তু বিল্ড আইডি বিট স্ট্রিং আসলটি সনাক্ত করে
লিঙ্ক করা ফাইল পরিবর্তন হয় না।
জন্য "কোনটিই" পাস করা হচ্ছে না শৈলী আগের যেকোনো "--build-id" বিকল্প থেকে সেটিং নিষ্ক্রিয় করে
কমান্ড লাইন।
i386 PE লিঙ্কার সমর্থন করে - শেয়ার করা হয়েছে বিকল্প, যার ফলে আউটপুট a হতে পারে
একটি সাধারণ এক্সিকিউটেবলের পরিবর্তে গতিশীলভাবে লিঙ্কযুক্ত লাইব্রেরি (DLL)। আপনি নাম করা উচিত
আপনি যখন এই বিকল্পটি ব্যবহার করেন তখন "*.dll" আউটপুট করুন। উপরন্তু, লিঙ্কার সম্পূর্ণরূপে সমর্থন করে
স্ট্যান্ডার্ড "*.def" ফাইল, যা লিঙ্কার কমান্ড লাইনে একটি বস্তুর মতো নির্দিষ্ট করা যেতে পারে
ফাইল (আসলে, এটি আর্কাইভের আগে থাকা উচিত যে এটি থেকে প্রতীক রপ্তানি করে, যাতে তারা পায় তা নিশ্চিত করতে
একটি সাধারণ অবজেক্ট ফাইলের মতোই লিঙ্ক করা হয়েছে)।
সমস্ত লক্ষ্যগুলির জন্য সাধারণ বিকল্পগুলি ছাড়াও, i386 PE লিঙ্কার অতিরিক্ত সমর্থন করে
কমান্ড লাইন অপশন যা i386 PE টার্গেটের জন্য নির্দিষ্ট। মান গ্রহণ করে এমন বিকল্প
একটি স্থান বা একটি সমান চিহ্ন দ্বারা তাদের মান থেকে পৃথক করা যেতে পারে।
--add-stdcall-alias
দেওয়া হলে, stdcall প্রত্যয় সহ চিহ্ন (@nn) হিসাবে রপ্তানি করা হবে এবং এর সাথেও
প্রত্যয় ছিনতাই [এই বিকল্পটি লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--বেস-ফাইল ফাইল
ব্যবহার ফাইল একটি ফাইলের নাম হিসাবে যেখানে সমস্ত বেস ঠিকানা সংরক্ষণ করা হয়
এর সাথে DLL তৈরির জন্য প্রয়োজনীয় স্থানান্তর dlltool. [এটি একটি i386 PE নির্দিষ্ট
বিকল্প]
--dll
একটি নিয়মিত এক্সিকিউটেবলের পরিবর্তে একটি DLL তৈরি করুন। আপনিও ব্যবহার করতে পারেন - শেয়ার করা হয়েছে অথবা একটি নির্দিষ্ট করুন
একটি প্রদত্ত ".def" ফাইলে "লাইব্রেরি"। [এই বিকল্পটি i386 PE টার্গেটের জন্য নির্দিষ্ট
লিঙ্কারের পোর্ট]
--সক্ষম-দীর্ঘ-বিভাগ-নাম
--অক্ষম-দীর্ঘ-বিভাগ-নাম
COFF অবজেক্ট ফরম্যাটের PE ভেরিয়েন্টগুলি একটি এক্সটেনশন যোগ করে যা ব্যবহারের অনুমতি দেয়
বিভাগের নাম আটটি অক্ষরের বেশি, COFF-এর জন্য স্বাভাবিক সীমা। গতানুগতিক,
এই নামগুলি শুধুমাত্র অবজেক্ট ফাইলগুলিতে অনুমোদিত, যেহেতু সম্পূর্ণ-লিঙ্ক করা এক্সিকিউটেবল ইমেজগুলি তা করে না
লম্বা নাম সমর্থন করার জন্য প্রয়োজনীয় COFF স্ট্রিং টেবিল বহন করুন। একটি GNU এক্সটেনশন হিসাবে,
এক্সিকিউটেবল ইমেজগুলিতেও তাদের ব্যবহারের অনুমতি দেওয়া সম্ভব, বা (সম্ভবত
অর্থহীনভাবে!) এই দুটি বিকল্প ব্যবহার করে অবজেক্ট ফাইলগুলিতে এটিকে অস্বীকৃতি দিন। নির্বাহযোগ্য
এই দীর্ঘ বিভাগের নামগুলির সাথে উত্পন্ন চিত্রগুলি কিছুটা অ-মানক, যেমন বহন করে
তারা একটি স্ট্রিং টেবিল করে, এবং নন-জিএনইউ দিয়ে পরীক্ষা করার সময় বিভ্রান্তিকর আউটপুট তৈরি করতে পারে
PE-সচেতন টুল, যেমন ফাইল ভিউয়ার এবং ডাম্পার। যাইহোক, জিডিবি ব্যবহারের উপর নির্ভর করে
একটি এক্সিকিউটেবলে বামন-2 ডিবাগ তথ্য বিভাগগুলি খুঁজে পেতে PE দীর্ঘ বিভাগের নাম
রানটাইমে ইমেজ, এবং তাই যদি কমান্ড-লাইনে কোনো বিকল্প নির্দিষ্ট করা না থাকে, ld ইচ্ছা
ডিফল্ট ও টেকনিক্যালি সঠিক আচরণকে ওভাররাইড করে দীর্ঘ বিভাগের নামগুলি সক্ষম করুন,
যখন এটি একটি এক্সিকিউটেবল ইমেজ লিঙ্ক করার সময় ডিবাগ তথ্যের উপস্থিতি খুঁজে পায় এবং
চিহ্ন ছিন্ন করা নয়। [এই বিকল্পটি লিঙ্কারের সমস্ত PE টার্গেটেড পোর্টের জন্য বৈধ]
--enable-stdcall-fixup
--stdcall-fixup নিষ্ক্রিয় করুন
যদি লিঙ্কটি এমন একটি প্রতীক খুঁজে পায় যা এটি সমাধান করতে পারে না, তবে এটি "অস্পষ্ট" করার চেষ্টা করবে
লিঙ্ক করা" অন্য একটি সংজ্ঞায়িত চিহ্নের সন্ধান করে যা শুধুমাত্র ফরম্যাটে আলাদা
প্রতীকের নাম (cdecl বনাম stdcall) এবং ম্যাচের সাথে লিঙ্ক করে সেই প্রতীকটি সমাধান করবে।
উদাহরণস্বরূপ, অনির্ধারিত প্রতীক "_foo" ফাংশন "_foo@12" এর সাথে লিঙ্ক করা হতে পারে, অথবা
অনির্ধারিত চিহ্ন "_bar@16" ফাংশন "_bar" এর সাথে যুক্ত হতে পারে। যখন
লিঙ্কার এটি করে, এটি একটি সতর্কতা প্রিন্ট করে, যেহেতু এটি সাধারণত লিঙ্ক করতে ব্যর্থ হওয়া উচিত ছিল,
কিন্তু কখনও কখনও তৃতীয় পক্ষের dll থেকে উৎপন্ন লাইব্রেরি আমদানি করতে এই বৈশিষ্ট্যের প্রয়োজন হতে পারে
ব্যবহারযোগ্য হতে যদি আপনি উল্লেখ করেন --enable-stdcall-fixup, এই বৈশিষ্ট্য সম্পূর্ণরূপে সক্রিয় করা হয়েছে
এবং সতর্কবার্তা ছাপা হয় না। যদি আপনি উল্লেখ করেন --stdcall-fixup নিষ্ক্রিয় করুন, এই বৈশিষ্ট্য
অক্ষম এবং এই ধরনের অমিলগুলি ত্রুটি হিসাবে বিবেচিত হয়৷ [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্ট]
--লিডিং-আন্ডারস্কোর
--নো-লিডিং-আন্ডারস্কোর
বেশিরভাগ লক্ষ্যের জন্য ডিফল্ট প্রতীক-প্রিফিক্স একটি আন্ডারস্কোর এবং লক্ষ্যে সংজ্ঞায়িত করা হয়
বর্ণনা এই বিকল্পের মাধ্যমে ডিফল্ট আন্ডারস্কোর নিষ্ক্রিয়/সক্ষম করা সম্ভব
প্রতীক-উপসর্গ।
--রপ্তানি-সমস্ত-প্রতীক
যদি দেওয়া হয়, একটি DLL নির্মাণের জন্য ব্যবহৃত বস্তুর সমস্ত বৈশ্বিক প্রতীক রপ্তানি করা হবে
DLL. মনে রাখবেন যে এটি ডিফল্ট যদি অন্যথায় কোনো রপ্তানি না হয়
প্রতীক যখন প্রতীকগুলি স্পষ্টভাবে DEF ফাইলের মাধ্যমে রপ্তানি করা হয় বা অন্তর্নিহিতভাবে রপ্তানি করা হয়
ফাংশন বৈশিষ্ট্যের মাধ্যমে, ডিফল্ট হল এই বিকল্পটি ছাড়া অন্য কিছু রপ্তানি করা হবে না
দেওয়া হয়. মনে রাখবেন যে প্রতীক "DllMain@12", "DllEntryPoint@0",
"DllMainCRTSstartup@12", এবং "impure_ptr" স্বয়ংক্রিয়ভাবে রপ্তানি হবে না। এছাড়াও,
অন্যান্য DLL থেকে আমদানি করা প্রতীকগুলি পুনরায় রপ্তানি করা হবে না, বা প্রতীকগুলি নির্দিষ্ট করা হবে না
DLL এর অভ্যন্তরীণ বিন্যাস যেমন "_head_" দিয়ে শুরু বা শেষ
"_আমি নাম". উপরন্তু, "libgcc", "libstd++", "libmingw32", অথবা থেকে কোন চিহ্ন নেই
"crtX.o" রপ্তানি করা হবে। প্রতীক যাদের নাম "__rtti_" বা "__builtin_" দিয়ে শুরু হয়
C++ DLL এর সাহায্যে রপ্তানি করা হবে না। অবশেষে, একটি বিস্তৃত তালিকা আছে
সাইগউইন-প্রাইভেট চিহ্ন যা রপ্তানি করা হয় না (স্পষ্টতই, এটি নির্মাণের সময় প্রযোজ্য
সাইগউইন লক্ষ্যগুলির জন্য DLL)। এই cygwin-বাদ দেওয়া হল: "_cygwin_dll_entry@12",
"_cygwin_crt0_common@8", "_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2",
"cygwin_premain3", এবং "environ"। [এই বিকল্পটি i386 PE টার্গেটের জন্য নির্দিষ্ট
লিঙ্কারের পোর্ট]
--বাদ-চিহ্ন প্রতীক,প্রতীক...
চিহ্নগুলির একটি তালিকা নির্দিষ্ট করে যা স্বয়ংক্রিয়ভাবে রপ্তানি করা উচিত নয়। প্রতীক
নাম কমা বা কোলন দ্বারা সীমাবদ্ধ করা যেতে পারে। [এই বিকল্পটি i386 PE-এর জন্য নির্দিষ্ট
লিঙ্কার টার্গেটেড পোর্ট]
--বাদ-সমস্ত-চিহ্ন
নির্দিষ্ট করে কোন চিহ্ন স্বয়ংক্রিয়ভাবে রপ্তানি করা উচিত নয়। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্ট]
--ফাইল-সারিবদ্ধকরণ
ফাইল সারিবদ্ধকরণ নির্দিষ্ট করুন। ফাইলের বিভাগগুলি সর্বদা ফাইল অফসেটে শুরু হবে
যা এই সংখ্যার গুণিতক। এটি ডিফল্ট 512। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্টে]
--গাদা সংচিতি
--গাদা সংচিতি,সমর্পণ করা
হিসাবে ব্যবহার করার জন্য রিজার্ভ (এবং ঐচ্ছিকভাবে প্রতিশ্রুতিবদ্ধ) মেমরির বাইটের সংখ্যা নির্দিষ্ট করুন
এই প্রোগ্রামের জন্য গাদা. ডিফল্ট 1MB সংরক্ষিত, 4K প্রতিশ্রুতিবদ্ধ। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--ইমেজ-বেস মূল্য
ব্যবহার মূল্য আপনার প্রোগ্রাম বা dll এর মূল ঠিকানা হিসাবে। এটি সর্বনিম্ন স্মৃতি
অবস্থান যা আপনার প্রোগ্রাম বা dll লোড হলে ব্যবহার করা হবে। প্রয়োজন কমাতে হবে
স্থানান্তর করুন এবং আপনার dll-এর কর্মক্ষমতা উন্নত করুন, প্রতিটির একটি অনন্য বেস ঠিকানা থাকা উচিত
এবং অন্য কোন dll ওভারল্যাপ করবেন না। এক্সিকিউটেবলের জন্য ডিফল্ট হল 0x400000, এবং
dll এর জন্য 0x10000000। [এই বিকল্পটি i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট
লিঙ্কার]
-- হত্যা করা
দেওয়া হলে, stdcall প্রত্যয় (@nn) এর আগে চিহ্ন থেকে ছিনিয়ে নেওয়া হবে
রপ্তানি [এই বিকল্পটি লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--বড়-ঠিকানা-সচেতন
যদি দেওয়া হয়, COFF হেডারের "বৈশিষ্ট্য" ক্ষেত্রে উপযুক্ত বিট সেট করা হয়
নির্দেশ করার জন্য যে এই এক্সিকিউটেবলটি 2 গিগাবাইটের বেশি ভার্চুয়াল ঠিকানা সমর্থন করে।
এটি /3GB বা /USERVA= এর সাথে ব্যবহার করা উচিতমূল্য মেগাবাইট সুইচ ইন
BOOT.INI-এর "[অপারেটিং সিস্টেম]" বিভাগ। অন্যথায়, এই বিট কোন প্রভাব আছে.
[এই বিকল্পটি লিঙ্কারের পিই টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--অক্ষম-বড়-ঠিকানা-সচেতন
পূর্বের প্রভাবকে ফিরিয়ে দেয় --বড়-ঠিকানা-সচেতন বিকল্প এই যদি দরকারী
--বড়-ঠিকানা-সচেতন সর্বদা কম্পাইলার ড্রাইভার দ্বারা সেট করা হয় (যেমন Cygwin gcc) এবং
এক্সিকিউটেবল 2 গিগাবাইটের বেশি ভার্চুয়াল ঠিকানা সমর্থন করে না। [এই বিকল্প
লিঙ্কারের পিই টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--প্রধান-ইমেজ-সংস্করণ মূল্য
"ইমেজ সংস্করণ" এর প্রধান সংখ্যা সেট করে। ডিফল্ট 1। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--মেজর-ওএস-সংস্করণ মূল্য
"OS সংস্করণ" এর প্রধান সংখ্যা সেট করে। ডিফল্ট 4. [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্টে]
--প্রধান-সাবসিস্টেম-সংস্করণ মূল্য
"সাবসিস্টেম সংস্করণ" এর প্রধান সংখ্যা সেট করে। ডিফল্ট 4. [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--ছোট-ছবি-সংস্করণ মূল্য
"ইমেজ সংস্করণ" এর গৌণ সংখ্যা সেট করে। ডিফল্ট 0। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--মাইনর-ওএস-সংস্করণ মূল্য
"OS সংস্করণ" এর গৌণ সংখ্যা সেট করে। ডিফল্ট 0। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্টে]
--অপ্রধান-সাবসিস্টেম-সংস্করণ মূল্য
"সাবসিস্টেম সংস্করণ" এর গৌণ সংখ্যা সেট করে। ডিফল্ট 0। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--আউটপুট-ডিফ ফাইল
লিঙ্কার ফাইলটি তৈরি করবে ফাইল যার সাথে সম্পর্কিত একটি DEF ফাইল থাকবে
DLL লিঙ্কার তৈরি করছে। এই DEF ফাইলটি (যাকে "*.def" বলা উচিত) হতে পারে
"dlltool" সহ একটি আমদানি লাইব্রেরি তৈরি করতে ব্যবহার করা যেতে পারে বা একটি রেফারেন্স হিসাবে ব্যবহার করা যেতে পারে
স্বয়ংক্রিয়ভাবে বা পরোক্ষভাবে রপ্তানি করা প্রতীক। [এই বিকল্পটি i386 PE-এর জন্য নির্দিষ্ট
লিঙ্কার টার্গেটেড পোর্ট]
--আউট-ইম্পলিব ফাইল
লিঙ্কার ফাইলটি তৈরি করবে ফাইল যার সাথে সম্পর্কিত একটি আমদানি lib থাকবে
DLL লিঙ্কার তৈরি করছে। এই আমদানি lib (যাকে "*.dll.a" বলা উচিত বা
"*.a" উত্পন্ন DLL এর সাথে ক্লায়েন্টদের লিঙ্ক করতে ব্যবহার করা যেতে পারে; এই আচরণ এটা তোলে
একটি পৃথক "dlltool" আমদানি লাইব্রেরি তৈরির ধাপ এড়িয়ে যাওয়া সম্ভব। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--সক্ষম-অটো-ইমেজ-বেস
--সক্ষম-অটো-ইমেজ-বেস=মূল্য
স্বয়ংক্রিয়ভাবে DLL-এর জন্য ইমেজ বেস বেছে নিন, ঐচ্ছিকভাবে বেস দিয়ে শুরু করুন মূল্য,
"--ইমেজ-বেস" আর্গুমেন্ট ব্যবহার করে নির্দিষ্ট করা না হলে। তৈরি একটি হ্যাশ ব্যবহার করে
dllname থেকে প্রতিটি DLL, ইন-মেমরি সংঘর্ষ এবং এর জন্য অনন্য ইমেজ বেস তৈরি করতে
স্থানান্তর যা প্রোগ্রাম সম্পাদনে বিলম্ব করতে পারে তা এড়ানো হয়। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্টে]
--অটো-ইমেজ-বেস অক্ষম করুন
স্বয়ংক্রিয়ভাবে একটি অনন্য ইমেজ বেস তৈরি করবেন না। যদি কোন ব্যবহারকারী-নির্দিষ্ট না থাকে
ইমেজ বেস ("--ইমেজ-বেস") তারপর প্ল্যাটফর্ম ডিফল্ট ব্যবহার করুন। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্টে]
--dll-সার্চ-প্রিফিক্স স্ট্রিং
একটি আমদানি লাইব্রেরি ছাড়াই একটি dll-এ গতিশীলভাবে লিঙ্ক করার সময়, অনুসন্ধান করুন৷
" .dll" অগ্রাধিকারে "lib .dll। এই আচরণ অনুমতি দেয়
বিভিন্ন "সাবপ্ল্যাটফর্ম" এর জন্য নির্মিত DLL-এর মধ্যে সহজ পার্থক্য: নেটিভ, সাইগউইন,
uwin, pw, ইত্যাদি। উদাহরণস্বরূপ, cygwin DLL সাধারণত "--dll-search-prefix=cyg" ব্যবহার করে।
[এই বিকল্পটি লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--সক্ষম-স্বয়ংক্রিয় আমদানি
DLLs থেকে DATA আমদানির জন্য "_symbol" থেকে "__imp__symbol"-এর অত্যাধুনিক লিঙ্কিং করুন,
এবং আমদানি লাইব্রেরি তৈরি করার সময় প্রয়োজনীয় থাঙ্কিং চিহ্ন তৈরি করুন
সেই ডেটা রপ্তানি। দ্রষ্টব্য: 'স্বয়ংক্রিয়-আমদানি' এক্সটেনশনের ব্যবহার পাঠ্যের কারণ হবে
ইমেজ ফাইলের অংশ লেখার যোগ্য করতে হবে। এটি PE-COFF-এর সাথে সঙ্গতিপূর্ণ নয়
মাইক্রোসফ্ট দ্বারা প্রকাশিত ফর্ম্যাট স্পেসিফিকেশন।
দ্রষ্টব্য - 'স্বয়ংক্রিয়-আমদানি' এক্সটেনশনের ব্যবহার শুধুমাত্র পঠনযোগ্য ডেটার কারণ হবে
সাধারণত .rdata বিভাগে .data বিভাগে স্থাপন করা হয়
পরিবর্তে. এটি বর্ণনা করা হয়েছে এমন কনস্টের সমস্যা নিয়ে কাজ করার জন্য
এখানে: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
'স্বয়ংক্রিয় আমদানি' ব্যবহার করা সাধারণত 'শুধু কাজ করবে' -- কিন্তু কখনও কখনও আপনি এটি দেখতে পারেন
বার্তা:
"ভেরিয়েবল ' ' স্বয়ংক্রিয়ভাবে আমদানি করা যাবে না। অনুগ্রহ করে ld's এর জন্য ডকুমেন্টেশন পড়ুন
বিশদ বিবরণের জন্য "--সক্ষম-অটো-আমদানি"৷
এই বার্তাটি ঘটে যখন কিছু (উপ) অভিব্যক্তি চূড়ান্তভাবে প্রদত্ত ঠিকানা অ্যাক্সেস করে
দুটি ধ্রুবকের যোগফল (Win32 আমদানি টেবিল শুধুমাত্র একটিকে অনুমতি দেয়)। উদাহরণ যেখানে এই
একটি DLL থেকে আমদানি করা struct ভেরিয়েবলের সদস্য ক্ষেত্রগুলিতে অ্যাক্সেস অন্তর্ভুক্ত হতে পারে,
সেইসাথে একটি DLL থেকে আমদানি করা একটি অ্যারে ভেরিয়েবলে একটি ধ্রুবক সূচক ব্যবহার করা। যে কোন
মাল্টিওয়ার্ড ভেরিয়েবল (অ্যারে, স্ট্রাকস, লং লং, ইত্যাদি) এই ত্রুটি অবস্থাকে ট্রিগার করতে পারে।
যাইহোক, আপত্তিকর এক্সপোর্ট ভেরিয়েবলের সঠিক ডেটা টাইপ নির্বিশেষে, ld হবে
সর্বদা এটি সনাক্ত করুন, সতর্কতা জারি করুন এবং প্রস্থান করুন।
ডেটা টাইপ নির্বিশেষে এই অসুবিধাটি মোকাবেলার বিভিন্ন উপায় রয়েছে
রপ্তানি পরিবর্তনশীল:
একটি উপায় হল --enable-runtime-pseudo-reloc সুইচ ব্যবহার করা। এই কাজ ছেড়ে
রানটাইম পরিবেশের জন্য আপনার ক্লায়েন্ট কোডে রেফারেন্স সামঞ্জস্য করা, তাই এই পদ্ধতিটি কাজ করে
শুধুমাত্র যখন রানটাইম পরিবেশ এই বৈশিষ্ট্য সমর্থন করে।
একটি দ্বিতীয় সমাধান হল 'ধ্রুবক'-এর একটিকে একটি পরিবর্তনশীল হতে বাধ্য করা -- অর্থাৎ,
কম্পাইলের সময় অজানা এবং অ-অপ্টিমাইজ করা যায়। অ্যারেগুলির জন্য, দুটি সম্ভাবনা রয়েছে:
a) indexee (অ্যারের ঠিকানা) একটি পরিবর্তনশীল করুন, অথবা b) 'ধ্রুবক' সূচক করুন
একটি পরিবর্তনশীল. এইভাবে:
extern type extern_array[];
extern_array[1] -->
{ উদ্বায়ী প্রকার *t=extern_array; টি[1]}
or
extern type extern_array[];
extern_array[1] -->
{ উদ্বায়ী int t=1; extern_array[t] }
স্ট্রাকস (এবং বেশিরভাগ অন্যান্য মাল্টিওয়ার্ড ডেটা টাইপ) জন্য একমাত্র বিকল্পটি তৈরি করা
struct নিজেই (বা দীর্ঘ দীর্ঘ, বা ...) পরিবর্তনশীল:
extern struct s extern_struct;
extern_struct.field -->
{ উদ্বায়ী কাঠামো s *t=&extern_struct; t->ক্ষেত্র }
or
extern long long extern_ll;
extern_ll -->
{ উদ্বায়ী দীর্ঘ দীর্ঘ * local_ll=&extern_ll; *স্থানীয়_ল }
এই অসুবিধা মোকাবেলার একটি তৃতীয় পদ্ধতি হল 'স্বয়ংক্রিয় আমদানি' পরিত্যাগ করা
আপত্তিকর প্রতীক এবং "__declspec(dllimport)" দিয়ে চিহ্নিত করুন। যাইহোক, অনুশীলনে যে
আপনি একটি DLL নির্মাণ করছেন কিনা তা নির্দেশ করতে কম্পাইল-টাইম #defines ব্যবহার করতে হবে,
বিল্ডিং ক্লায়েন্ট কোড যা DLL এর সাথে লিঙ্ক করবে, অথবা শুধুমাত্র বিল্ডিং/লিঙ্কিং একটি স্ট্যাটিক এর সাথে
লাইব্রেরি 'সরাসরি সমাধানের বিভিন্ন পদ্ধতির মধ্যে নির্বাচন করা
ধ্রুব অফসেট' সমস্যা সহ ঠিকানা, আপনার সাধারণ বাস্তব-বিশ্ব ব্যবহার বিবেচনা করা উচিত:
মূল:
--foo.h
extern int arr[];
--foo.c
# "foo.h" অন্তর্ভুক্ত করুন
void main(int argc, char **argv){
printf("%d\n", arr[1]);
}
1 সমাধান:
--foo.h
extern int arr[];
--foo.c
# "foo.h" অন্তর্ভুক্ত করুন
void main(int argc, char **argv){
/* এই সমাধানটি win32 এবং cygwin এর জন্য; "অপ্টিমাইজ" করবেন না */
উদ্বায়ী int *parr = arr;
printf("%d\n", parr[1]);
}
2 সমাধান:
--foo.h
/* দ্রষ্টব্য: স্বয়ংক্রিয়-রপ্তানি ধরে নেওয়া হয়েছে (কোন __declspec(dllexport)) */
#if (সংজ্ঞায়িত(_WIN32) || সংজ্ঞায়িত(__CYGWIN__)) &&
!(সংজ্ঞায়িত(FOO_BUILD_DLL) || সংজ্ঞায়িত(FOO_STATIC))
#FOO_IMPORT __declspec(dllimport) সংজ্ঞায়িত করুন
# আরও
#FOO_IMPORT সংজ্ঞায়িত করুন
#endif
বহিরাগত FOO_IMPORT int arr[];
--foo.c
# "foo.h" অন্তর্ভুক্ত করুন
void main(int argc, char **argv){
printf("%d\n", arr[1]);
}
এই সমস্যা এড়াতে একটি চতুর্থ উপায় হল একটি কার্যকরী ব্যবহার করার জন্য আপনার লাইব্রেরি পুনরায় কোড করা
আপত্তিকর ভেরিয়েবলের জন্য ডেটা ইন্টারফেসের পরিবর্তে ইন্টারফেস (যেমন set_foo() এবং
get_foo() অ্যাক্সেসর ফাংশন)। [এই বিকল্পটি i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট
লিঙ্কারের]
--অটো-ইমপোর্ট অক্ষম করুন
ডেটার জন্য "_symbol" থেকে "__imp__symbol" এর পরিশীলিত লিঙ্ক করার চেষ্টা করবেন না
DLLs থেকে আমদানি। [এই বিকল্পটি i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট
লিঙ্কার]
--সক্ষম-রানটাইম-সিউডো-রিলোক
যদি আপনার কোডে --enable-auto-import বিভাগে বর্ণিত এক্সপ্রেশন থাকে, অর্থাৎ,
অ-শূন্য অফসেট সহ DLL থেকে ডেটা আমদানি, এই সুইচটি একটি ভেক্টর তৈরি করবে
'রানটাইম সিউডো রিলোকেশন' যা রানটাইম পরিবেশের দ্বারা সামঞ্জস্য করতে ব্যবহার করা যেতে পারে
আপনার ক্লায়েন্ট কোডে এই ধরনের ডেটার রেফারেন্স। [এই বিকল্পটি i386 PE-এর জন্য নির্দিষ্ট
লিঙ্কার টার্গেটেড পোর্ট]
--অক্ষম-রানটাইম-ছদ্ম-রিলোক
DLLs থেকে অ-শূন্য অফসেট ডেটা আমদানির জন্য ছদ্ম স্থানান্তর তৈরি করবেন না। [এই
বিকল্পটি লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--সক্ষম-অতিরিক্ত-পিই-ডিবাগ
স্বয়ংক্রিয়-আমদানি প্রতীক থাঙ্কিং সম্পর্কিত অতিরিক্ত ডিবাগ তথ্য দেখান। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--বিভাগ-সারিবদ্ধকরণ
বিভাগ প্রান্তিককরণ সেট করে। মেমরির বিভাগগুলি সর্বদা ঠিকানাগুলিতে শুরু হবে যা
এই সংখ্যার একাধিক। ডিফল্ট 0x1000। [এই বিকল্পটি নির্দিষ্ট
লিঙ্কারের i386 PE টার্গেটেড পোর্ট]
--স্ট্যাক সংচিতি
--স্ট্যাক সংচিতি,সমর্পণ করা
হিসাবে ব্যবহার করার জন্য রিজার্ভ (এবং ঐচ্ছিকভাবে প্রতিশ্রুতিবদ্ধ) মেমরির বাইটের সংখ্যা নির্দিষ্ট করুন
এই প্রোগ্রামের জন্য স্ট্যাক. ডিফল্ট 2MB সংরক্ষিত, 4K প্রতিশ্রুতিবদ্ধ। [এই বিকল্পটি
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--সাবসিস্টেম যে
--সাবসিস্টেম যে:মুখ্য
--সাবসিস্টেম যে:মুখ্য.গৌণ
সাবসিস্টেম নির্দিষ্ট করে যার অধীনে আপনার প্রোগ্রাম চালানো হবে। জন্য আইনি মান
যে হল "নেটিভ", "উইন্ডোজ", "কনসোল", "পোসিক্স", এবং "এক্সবক্স"। আপনি ঐচ্ছিকভাবে সেট করতে পারেন
সাবসিস্টেম সংস্করণও। সংখ্যাসূচক মান এছাড়াও জন্য গৃহীত হয় যে. [এই বিকল্প
লিঙ্কারের i386 PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
নিম্নলিখিত বিকল্পগুলি PE ফাইলের "Dll বৈশিষ্ট্য" ক্ষেত্রে পতাকা সেট করে
শিরোনাম: [এই বিকল্পগুলি লিঙ্কারের PE টার্গেটেড পোর্টের জন্য নির্দিষ্ট]
--হাই-এনট্রপি-ভিএ
ইমেজ 64-বিট অ্যাড্রেস স্পেস লেআউট র্যান্ডমাইজেশন (ASLR) এর সাথে সামঞ্জস্যপূর্ণ।
--ডাইনামিকবেস
ইমেজ বেস অ্যাড্রেস অ্যাড্রেস স্পেস লেআউট র্যান্ডমাইজেশন ব্যবহার করে স্থানান্তরিত হতে পারে
(এএসএলআর)। এই বৈশিষ্ট্যটি MS Windows Vista-এর সাথে i386 PE টার্গেটের জন্য চালু করা হয়েছিল।
--forceinteg
কোড অখণ্ডতা চেক প্রয়োগ করা হয়.
--nxcompat
চিত্রটি ডেটা এক্সিকিউশন প্রতিরোধের সাথে সামঞ্জস্যপূর্ণ। এই বৈশিষ্ট্য ছিল
i2 PE লক্ষ্যগুলির জন্য MS Windows XP SP386 এর সাথে প্রবর্তন করা হয়েছে।
--কোন-বিচ্ছিন্নতা
যদিও ছবি বিচ্ছিন্নতা বোঝে, ছবিকে বিচ্ছিন্ন করবেন না।
--না-সেহ
ছবিটি SEH ব্যবহার করে না। এই ইমেজ থেকে কোন SE হ্যান্ডলার কল করা যাবে না.
--না-আবদ্ধ
এই ছবিটি আবদ্ধ করবেন না।
--wdmdriver
ড্রাইভার এমএস উইন্ডোজ ড্রাইভার মডেল ব্যবহার করে।
--তসওয়ার
ছবিটি টার্মিনাল সার্ভার সচেতন।
-- সন্নিবেশ-টাইমস্ট্যাম্প
--নো-ইনসার্ট-টাইমস্ট্যাম্প
ছবিতে একটি বাস্তব টাইমস্ট্যাম্প সন্নিবেশ করান৷ এটি মেলে হিসাবে এটি ডিফল্ট আচরণ
লিগ্যাসি কোড এবং এর মানে হল যে ছবিটি অন্যান্য, মালিকানাধীন সরঞ্জামগুলির সাথে কাজ করবে। দ্য
এই ডিফল্টের সাথে সমস্যা হল যে এটির ফলে সামান্য ভিন্ন ইমেজ হবে
উত্পাদিত প্রতিটি সময় একই উত্স লিঙ্ক করা হয়. পছন্দ --নো-ইনসার্ট-টাইমস্ট্যাম্প পারেন
টাইমস্ট্যাম্পের জন্য একটি শূন্য মান সন্নিবেশ করতে ব্যবহার করা হবে, এটি নিশ্চিত করে যে বাইনারি উত্পাদিত হয়
অভিন্ন উৎস থেকে অভিন্ন তুলনা করা হবে.
C6X uClinux টার্গেট শেয়ার করা লাইব্রেরিগুলিকে সমর্থন করার জন্য DSBT নামে একটি বাইনারি ফর্ম্যাট ব্যবহার করে। প্রতিটি
সিস্টেমে ভাগ করা লাইব্রেরির একটি অনন্য সূচক থাকা দরকার; সমস্ত এক্সিকিউটেবল এর একটি সূচক ব্যবহার করে
0.
--dsbt-আকার আয়তন
এই বিকল্পটি বর্তমান এক্সিকিউটেবল বা শেয়ার করা ডিএসবিটি-তে এন্ট্রির সংখ্যা সেট করে
লাইব্রেরি থেকে আয়তন. ডিফল্ট হল 64টি এন্ট্রি সহ একটি টেবিল তৈরি করা।
--dsbt-সূচক সূচক
এই বিকল্পটি বর্তমান এক্সিকিউটেবল বা শেয়ার্ড লাইব্রেরির DSBT সূচক সেট করে সূচক.
ডিফল্ট হল 0, যা এক্সিকিউটেবল তৈরি করার জন্য উপযুক্ত। যদি একটি শেয়ার করা হয়
লাইব্রেরি 0 এর একটি DSBT সূচক দিয়ে তৈরি করা হয়েছে, "R_C6000_DSBT_INDEX" রিলোকগুলি হল
আউটপুট ফাইলে অনুলিপি করা হয়েছে।
সার্জারির --নো-মার্জ-এক্সিডএক্স-এন্ট্রি সুইচ সংলগ্ন exidx এন্ট্রিগুলির একত্রীকরণ নিষ্ক্রিয় করে
ফ্রেম unwind তথ্য.
68HC11 এবং 68HC12 লিঙ্কারগুলি মেমরি ব্যাঙ্ক নিয়ন্ত্রণ করতে নির্দিষ্ট বিকল্পগুলিকে সমর্থন করে
স্যুইচিং ম্যাপিং এবং ট্রামপোলিন কোড জেনারেশন।
--নো-ট্রাম্পোলিন
এই বিকল্পটি ট্রামপোলিনের প্রজন্মকে অক্ষম করে। ডিফল্টরূপে একটি trampoline হয়
প্রতিটি দূর ফাংশনের জন্য তৈরি করা হয় যা "jsr" নির্দেশ ব্যবহার করে বলা হয় (এটি
একটি দূর ফাংশন একটি পয়েন্টার নেওয়া হলে ঘটবে)।
--ব্যাংক-জানালা নাম
এই বিকল্পটি লিঙ্কারকে মেমরি অঞ্চলের নাম নির্দেশ করে স্মৃতি
স্পেসিফিকেশন যা মেমরি ব্যাঙ্ক উইন্ডো বর্ণনা করে। এমন অঞ্চলের সংজ্ঞা হল
তারপর মেমরি উইন্ডোর মধ্যে পেজিং এবং ঠিকানাগুলি গণনা করতে লিঙ্কার দ্বারা ব্যবহৃত হয়।
লিঙ্ক করার সময় GOT জেনারেশন নিয়ন্ত্রণ করতে নিম্নলিখিত বিকল্পগুলি সমর্থিত
68K লক্ষ্য।
-- পেয়েছে=আদর্শ
এই বিকল্পটি লিঙ্কারকে বলে যে কোন GOT প্রজন্মের স্কিমটি ব্যবহার করতে হবে। আদর্শ এক হতে হবে
of একক, নেতিবাচক, multigot or লক্ষ্য. আরও তথ্যের জন্য তথ্য এন্ট্রি পড়ুন
উন্নত ld.
নিম্নলিখিত বিকল্পগুলি মাইক্রোএমআইপিএস নির্দেশনা তৈরি করার সময় নিয়ন্ত্রণ করতে সমর্থিত
MIPS লক্ষ্যগুলির জন্য লিঙ্ক করা।
--insn32
--no-insn32
এই বিকল্পগুলি দ্বারা উত্পন্ন কোডে ব্যবহৃত microMIPS নির্দেশাবলীর পছন্দ নিয়ন্ত্রণ করে
লিঙ্কার, যেমন PLT বা অলস বাইন্ডিং স্টাবগুলিতে বা শিথিলকরণে। যদি
--insn32 ব্যবহার করা হয়, তারপর লিঙ্কার শুধুমাত্র 32-বিট নির্দেশ এনকোডিং ব্যবহার করে। গতানুগতিক
অথবা যদি --no-insn32 ব্যবহার করা হয়, 16-বিট সহ সমস্ত নির্দেশ এনকোডিং ব্যবহার করা হয়
যেখানে সম্ভব.
পরিবেশ
আপনি এর আচরণ পরিবর্তন করতে পারেন ld এনভায়রনমেন্ট ভেরিয়েবলের সাথে "GNUTARGET",
"LDEMULATION" এবং "COLLECT_NO_DEMANGLE"।
আপনি যদি ব্যবহার না করেন তাহলে "GNUTARGET" ইনপুট-ফাইল অবজেক্ট ফরম্যাট নির্ধারণ করে -b (বা এর প্রতিশব্দ
--ফরম্যাট) এটির মান একটি ইনপুট বিন্যাসের জন্য BFD নামের একটি হওয়া উচিত। যদি না থাকে
পরিবেশে "GNUTARGET", ld লক্ষ্যের প্রাকৃতিক বিন্যাস ব্যবহার করে। যদি "GNUTARGET"
"ডিফল্ট" হিসাবে সেট করা হয় তারপর BFD বাইনারি পরীক্ষা করে ইনপুট বিন্যাস আবিষ্কার করার চেষ্টা করে
ইনপুট ফাইল; এই পদ্ধতি প্রায়ই সফল হয়, কিন্তু সম্ভাব্য অস্পষ্টতা আছে, যেহেতু সেখানে
অবজেক্ট-ফাইল বিন্যাস নির্দিষ্ট করতে ব্যবহৃত ম্যাজিক নম্বরটি নিশ্চিত করার কোন পদ্ধতি নয়
অনন্য যাইহোক, প্রতিটি সিস্টেমে BFD এর জন্য কনফিগারেশন পদ্ধতিটি রাখে
সার্চ-লিস্টে প্রথমে সেই সিস্টেমের জন্য প্রচলিত বিন্যাস, তাই অস্পষ্টতা সমাধান করা হয়
কনভেনশনের পক্ষে।
আপনি যদি ব্যবহার না করেন তাহলে "LDEMULATION" ডিফল্ট এমুলেশন নির্ধারণ করে -m বিকল্প। দ্য
অনুকরণ লিঙ্কার আচরণের বিভিন্ন দিককে প্রভাবিত করতে পারে, বিশেষ করে ডিফল্ট লিঙ্কার
লিপি. আপনি এর সাথে উপলব্ধ অনুকরণগুলি তালিকাভুক্ত করতে পারেন -- ভারবোস or -V বিকল্প যদি
-m বিকল্প ব্যবহার করা হয় না, এবং "LDEMULATION" পরিবেশ পরিবর্তনশীল সংজ্ঞায়িত করা হয় না,
ডিফল্ট এমুলেশন নির্ভর করে কিভাবে লিঙ্কার কনফিগার করা হয়েছে তার উপর।
সাধারনত, লিঙ্কারটি ডিফল্ট চিহ্নগুলিকে ডিম্যাংলিং করে। যাইহোক, যদি
"COLLECT_NO_DEMANGLE" পরিবেশে সেট করা আছে, তাহলে এটি ডিম্যাংলিং না করার জন্য ডিফল্ট হবে
প্রতীক এই এনভায়রনমেন্ট ভেরিয়েবলটি "gcc" লিঙ্কার দ্বারা অনুরূপ ফ্যাশনে ব্যবহৃত হয়
মোড়ানো প্রোগ্রাম। ডিফল্ট দ্বারা ওভাররাইড করা হতে পারে -- demangle এবং --নো-দেমঙ্গল
অপশন।
onworks.net পরিষেবা ব্যবহার করে অনলাইনে aarch64-linux-gnu-ld.bfd ব্যবহার করুন