লিনাক্স / ইউনিক্স কমান্ড: আইডি

NAME এর

ld - এলডি ব্যবহার করে , জিএনইউ লিঙ্কার

সংক্ষিপ্তসার

ld [ বিকল্প ] objfile ...

বর্ণনা

ld বিভিন্ন বস্তু এবং আর্কাইভ ফাইলগুলিকে সংমিশ্রণ করে , তাদের তথ্য স্থানান্তরিত করে এবং প্রতীক রেফারেন্সগুলির সাথে সম্পর্কযুক্ত। সাধারণত একটি প্রোগ্রাম কম্পাইল করার সর্বশেষ ধাপ হল ld চালানো।

ld লিঙ্কিং কমান্ড ভাষা ভাষা ফাইলগুলি গ্রহণ করে যা AT & T এর লিংক এডিটর কমান্ড ল্যাংগুয়েজ সিনট্যাক্সের একটি সুপারসেটে লিপিবদ্ধ করে, লিঙ্কিং প্রক্রিয়ার উপর স্পষ্ট এবং মোট নিয়ন্ত্রণ প্রদান করে।

এই ম্যান পৃষ্ঠাটি কমান্ড ভাষা বর্ণনা করে না; "তথ্য" এ এলডি এন্ট্রি দেখুন, বা ম্যানুয়াল লিড: জিএনইউ লিঙ্কার, কমান্ড ভাষা এবং জিএনইউ লিঙ্কারের অন্যান্য দিক সম্পর্কে বিস্তারিত জানার জন্য।

Ld এর এই সংস্করণটি সাধারণ উদ্দেশ্য BFD লাইব্রেরিগুলি অবজেক্ট ফাইলগুলিতে কাজ করার জন্য ব্যবহার করে। এটি ld বিভিন্ন ফরম্যাটে অবজেক্ট ফাইলগুলিকে পড়তে, একত্রিত এবং লিখতে সহায়তা করে - উদাহরণস্বরূপ, COFF বা "a.out" বিভিন্ন ফর্ম্যাটগুলি একসাথে সংযুক্ত করা যাবে যেকোনো উপলভ্য ধরনের অবজেক্ট ফাইল তৈরি করতে।

পাশাপাশি তার নমনীয়তা থেকে, ডায়গনিস্টিক তথ্য প্রদান অন্যান্য লিঙ্কার তুলনায় GNU লিঙ্কার আরো সহায়ক। অনেক লিঙ্কার একটি ত্রুটি সম্মুখীন পর অবিলম্বে মৃত্যুদন্ড ত্যাগ; যখনই সম্ভব, ld চলতে চলতে থাকে, আপনাকে অন্যান্য ত্রুটি সনাক্ত করতে দেয় (বা, কিছু ক্ষেত্রে, ত্রুটির সত্ত্বেও একটি আউটপুট ফাইল পেতে)।

GNU linker ld এর একটি বিস্তৃত পরিসীমা ধারণ করা, এবং অন্যান্য লিঙ্কারগুলির সাথে যতটা সম্ভব সামঞ্জস্যপূর্ণ হতে হবে। ফলস্বরূপ, আপনার আচরণ নিয়ন্ত্রণ করার জন্য আপনার কাছে অনেকগুলি বিকল্প রয়েছে।

পছন্দসমূহ

লিঙ্কার একটি কমান্ড-লাইন বিকল্পের ব্যাপক সমর্থন করে, তবে প্রকৃত অনুশীলনের মধ্যে কয়েকটি কোনও বিশেষ প্রসঙ্গে ব্যবহৃত হয়। উদাহরণস্বরূপ, ld এর একটি ঘন ঘন ব্যবহার একটি আদর্শ, সমর্থিত ইউনিক্স সিস্টেমের মধ্যে স্ট্যান্ডার্ড ইউনিক্স অবজেক্ট ফাইলগুলিকে সংযুক্ত করতে হয়। এই ধরনের একটি সিস্টেমে ফাইল "hello.o" লিঙ্ক করতে:

ld -o <আউটপুট> / lib / crt0.o hello.o -lc

এটি ld কে "hello.o" এবং লাইব্রেরির "libc.a" এর সাথে "/lib/crt0.o" ফাইলটি লিংক করার ফলাফল হিসাবে আউটপুট নামে একটি ফাইল তৈরি করতে বলে, যা স্ট্যান্ডার্ড সার্চ ডিরেক্টরিগুলি থেকে আসবে। (নীচের -ল বিকল্প আলোচনা দেখুন।)

কমান্ড লাইনের যে কোনও বিন্দুতে ld কমান্ড-লাইন বিকল্পগুলি নির্দিষ্ট করা যেতে পারে। যাইহোক, বিকল্পগুলি যেমন ফাইল-গুলি, যেমন- L অথবা -T , নির্দেশ করে, সেক্ষেত্রে ফাইলটি পড়ার জন্য বিন্দুতে যেখানে বিকল্পটি কমান্ড লাইনে প্রদর্শিত হয়, অবজেক্ট ফাইলগুলি এবং অন্যান্য ফাইলের বিকল্পগুলির সাথে সম্পর্কিত। ভিন্ন ভিন্ন আর্গুমেন্টের সাথে অ-ফাইল বিকল্পগুলি পুনরাবৃত্ত করা হলে এর বিকল্পটি আর আগের প্রভাব (কমান্ড লাইন থেকে আরও বামে) ওভাররাইড হবে না। বিকল্পগুলি যা একাধিকবার অর্থপূর্ণভাবে উল্লিখিত হতে পারে নীচের বর্ণনাগুলিতে উল্লিখিত।

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

সাধারণত লিঙ্কারটি কমপক্ষে একটি বস্তুর ফাইলের সাথে প্রয়োগ করা হয়, তবে আপনি -l , -r , এবং স্ক্রিপ্ট কমান্ড ভাষা ব্যবহার করে বাইনারি ইনপুট ফাইলের অন্যান্য ফর্মগুলি নির্দিষ্ট করতে পারেন। যদি কোনও বাইনারি ইনপুট ফাইল নির্দিষ্ট না থাকে তবে লিঙ্কার কোনও আউটপুট উত্পন্ন করে না এবং বার্তাটি ইম্পোর্ট ফাইলগুলি প্রকাশ করে না

যদি লিঙ্কার একটি বস্তুর ফাইলের বিন্যাসকে চিনতে না পারে, তবে এটি অনুমান করা যায় যে এটি একটি লিঙ্কার স্ক্রিপ্ট। এই ভাবে নির্দিষ্ট একটি স্ক্রিপ্ট লিঙ্কের জন্য ব্যবহৃত প্রধান লিঙ্কার স্ক্রিপ্ট (সাধারণত ডিফল্ট লিঙ্কার স্ক্রিপ্ট বা -T ব্যবহার করে নির্দিষ্ট করা হয়) ব্যবহার করে। এই বৈশিষ্ট্য লিঙ্কারকে একটি ফাইলের সাথে লিঙ্ক করতে অনুমতি দেয় যা একটি বস্তু বা আর্কাইভ বলে মনে হয়, কিন্তু প্রকৃতপক্ষে এটি নিছক কিছু প্রতীক মান নির্ধারণ করে, অথবা অন্যান্য বস্তুগুলি লোড করতে "INPUT" বা "GROUP" ব্যবহার করে। উল্লেখ্য, এই পদ্ধতিতে একটি স্ক্রিপ্ট উল্লেখ করে মূল লিংক স্ক্রিপ্টটি বৃদ্ধি করে; ডিফল্ট লিঙ্কার স্ক্রিপ্ট প্রতিস্থাপন করার জন্য -T বিকল্পটি ব্যবহার করুন।

বিকল্পগুলির জন্য যাদের নামের একক অক্ষর আছে, বিকল্প আর্গুমেন্টগুলি অবশ্যই হোয়াইটস্পেস হস্তক্ষেপ ছাড়াই বিকল্প অক্ষরটি অনুসরণ করতে হবে, অথবা তাদের প্রয়োজন অনুযায়ী বিকল্পটি অবিলম্বে পৃথক আর্গুমেন্ট হিসাবে দেওয়া হবে।

বিকল্পগুলির জন্য যাদের নামগুলি একাধিক অক্ষর, এক ড্যাশ বা দুটি বিকল্পের নাম হতে পারে; উদাহরণস্বরূপ, -trace-symbol এবং --trace-symbol সমতুল্য। নোট - এই নিয়ম একটি ব্যতিক্রম আছে। একাধিক অক্ষর বিকল্পগুলি যে একটি ছোট হাতের 'ও' দিয়ে শুরু হয় তা কেবল দুটি ড্যাশের দ্বারা প্রযোজিত হতে পারে। এই -o বিকল্পের সাথে বিভ্রান্তি কমাতে হয় সুতরাং উদাহরণস্বরূপ -omagic জাদুর আউটপুট ফাইল নাম সেট করে - যখন -অ্যাম্যাগিক আউটপুট নেভিগেশন NMAGIC পতাকা সেট।

একাধিক অক্ষর বিকল্পের আর্গুমেন্টগুলি অবশ্যই সমান চিহ্ন দ্বারা বিকল্প নাম থেকে পৃথক করা হবে, অথবা প্রয়োজনের বিকল্পের সাথে অবিলম্বে পৃথক আর্গুমেন্ট হিসাবে দেওয়া হবে। উদাহরণস্বরূপ, --trace-symbol foo এবং --trace-symbol = foo সমতুল্য। একাধিক অক্ষর বিকল্পের স্বতন্ত্র অক্ষরগুলি গ্রহণ করা হয়।

দ্রষ্টব্য - যদি লিঙ্কার অস্থায়ীভাবে আহবান করা হয়, তাহলে একটি কম্পাইলার ড্রাইভার (যেমন gcc ) এর মাধ্যমে সব লিঙ্কার কমান্ড লাইনের বিকল্পগুলি- WL দ্বারা (অথবা নির্দিষ্ট কম্পাইলার ড্রাইভারের জন্য উপযুক্ত) দ্বারা প্রিফিক করা উচিত:

gcc -Wl, - startgroup foo.o bar.o -Wl, - শেষ গ্রুপ

এটি গুরুত্বপূর্ণ, কারণ অন্যথায় কম্পাইলার চালক প্রোগ্রামটি চুপি চুপি লিঙ্কার অপশনগুলি ড্রপ করতে পারে, যার ফলে একটি খারাপ লিঙ্ক তৈরি হয়।

এখানে জেনেরিক কমান্ড লাইন সুইচ GNU লিঙ্কার দ্বারা গৃহীত একটি টেবিলের:

- একটি কীওয়ার্ড

এই বিকল্প HP / UX সামঞ্জস্যের জন্য সমর্থিত। কীওয়ার্ড আর্গুমেন্ট স্ট্রিং আর্কাইভ , ভাগ করা , বা ডিফল্ট এক হতে হবে। - অ্যারেভিকটি কার্যকরীভাবে -বিস্তাকরণের সমতুল্য, এবং অন্যান্য দুটি কীওয়ার্ডটি কার্যকরীভাবে -বিডিয়েনিকের সমতুল্য। এই বিকল্পটি কতবার ব্যবহার করা যেতে পারে

- একটি স্থাপত্য

--architecture = স্থাপত্য

এলডি এর বর্তমান রিলিজে, এই বিকল্প শুধুমাত্র স্থাপত্য 960 ইন্টেল 960 পরিবারের জন্য উপযোগী। যে ld কনফিগারেশনের মধ্যে, আর্কিটেকচারের যুক্তিটি 960 টির মধ্যে বিশেষ আর্কিটেকচারকে চিহ্নিত করে, কিছু সুরক্ষাকারী সক্ষম করে এবং আর্কাইভ-লাইব্রেরির অনুসন্ধানের পাথটি পরিবর্তন করে।

Ld এর ভবিষ্যত রিলিজ অন্যান্য স্থাপত্য পরিবারের জন্য অনুরূপ কার্যকারিতা সমর্থন করতে পারে।

-বি ইনপুট-বিন্যাস

--format = ইনপুট-বিন্যাস

ld একাধিক অবজেক্ট ফাইলকে সমর্থন করতে কনফিগার করা যেতে পারে। যদি আপনার ld এই ভাবে কনফিগার করা হয়, তাহলে আপনি কমান্ড লাইনের এই বিকল্পটি অনুসরণ করে ইনপুট বস্তু ফাইলগুলির জন্য বাইনারি বিন্যাসকে নির্দিষ্ট করতে -b বিকল্পটি ব্যবহার করতে পারেন। এমনকি যখন ld বিকল্প বস্তুর বিন্যাস সমর্থন করতে কনফিগার করা হয়, আপনি সাধারণত এটি নির্দিষ্ট করার প্রয়োজন হয় না, যেহেতু ld একটি ডিফল্ট ইনপুট বিন্যাস হিসাবে প্রত্যাশা করতে কনফিগার করা উচিত প্রতিটি মেশিনের সবচেয়ে সাধারণ বিন্যাস। ইনপুট-বিন্যাস একটি টেক্সট স্ট্রিং, BFD লাইব্রেরী দ্বারা সমর্থিত একটি নির্দিষ্ট ফরম্যাটের নাম। (আপনি objdump -i সঙ্গে উপলব্ধ বাইনারি বিন্যাস তালিকা করতে পারেন।)

আপনি এই বিকল্পটি ব্যবহার করতে চাইতে পারেন যদি আপনি একটি অস্বাভাবিক বাইনারি বিন্যাসে ফাইলগুলি সংযুক্ত করেন। আপনি বিন্যাসকে স্পষ্টভাবে সুইচ করতে -বি ব্যবহার করতে পারেন (যখন বিভিন্ন ফরম্যাটের বস্তু ফাইল সংযুক্ত করা), -বি ইনপুট-ফরম্যাট সহ একটি নির্দিষ্ট বিন্যাসে অবজেক্টের প্রতিটি গ্রুপের আগে।

ডিফল্ট বিন্যাস এনভায়রনমেন্ট ভেরিয়েবল "GNUTARGET" থেকে নেওয়া হয়।

আপনি "টেরগেট" কমান্ড ব্যবহার করে একটি স্ক্রিপ্ট থেকে ইনপুট ফর্ম্যাটটি সংজ্ঞায়িত করতে পারেন;

-সি এমআরআই-কমান্ডফাইল

--ম্রি-স্ক্রিপ্ট = এমআরআই-কমান্ডফাইল

এমআরআই দ্বারা উত্পাদিত লিংকগুলির সাথে সামঞ্জস্যের জন্য, ld একটি বিকল্প, সীমাবদ্ধ কমান্ড ভাষাতে লিখিত স্ক্রিপ্ট ফাইলগুলি স্বীকার করে, যা এমএন সমেত লিখিত স্ক্রিপ্ট ফাইলের অনুচ্ছেদ GNU ld ডকুমেন্টেশন এর বর্ণিত। অপশন- সি সহ এমআরআই স্ক্রিপ্ট ফাইলগুলি প্রবেশ করান; সাধারণ উদ্দেশ্যে লিড স্ক্রিপ্টিং ভাষায় লেখা লিঙ্কে স্ক্রিপ্ট চালানোর জন্য -T বিকল্পটি ব্যবহার করুন। যদি এমআরআই-সিএমডি ফাইলটি বিদ্যমান না থাকে, তবে এটির জন্য যে কোন- এল বিকল্প দ্বারা নির্দেশিত ডিরেক্টরির মধ্যে ld এটি অনুসন্ধান করে।

-d

-dc

-dp

এই তিনটি বিকল্প সমতুল্য; একাধিক ফর্ম অন্যান্য লিঙ্কার সাথে সামঞ্জস্যের জন্য সমর্থিত। তারা একটি স্বরবর্ণযোগ্য আউটপুট ফাইল ( -r ) সঙ্গে নির্দিষ্ট করা হয়, এমনকি যদি তারা সাধারণ প্রতীক স্থান প্রদান। স্ক্রিপ্ট কমান্ড "FORCE_COMMON_ALLOCATION" একই প্রভাব রয়েছে।

-ই এন্ট্রি

--ন্টry = এন্ট্রি

ডিফল্ট এন্ট্রি পয়েন্টের পরিবর্তে আপনার প্রোগ্রামের শুরুতে স্পষ্ট প্রতীক হিসাবে এন্ট্রি ব্যবহার করুন। যদি এন্ট্রি নামে কোনো প্রতীক না থাকে তবে লিঙ্কার একটি সংখ্যা হিসাবে এন্ট্রিটি প্যাড করার চেষ্টা করবে এবং এটি এন্ট্রি ঠিকানা হিসাবে ব্যবহার করবে (বেসটি বেস 10 এ ব্যাখ্যা করা হবে; আপনি বেস 16 এর জন্য একটি নেতৃস্থানীয় 0x ব্যবহার করতে পারেন, অথবা একটি নেতৃস্থানীয় 0 বেস জন্য 8)।

-E

--export-গতিশীল

একটি গতিশীল লিঙ্ক এক্সিকিউটেবল তৈরি করার সময়, ডায়নামিক প্রতীক সারণিতে সমস্ত চিহ্ন যোগ করুন। গতিশীল প্রতীক সারণিগুলি প্রতীকগুলির সংকলন যা চালানোর সময় গতিশীল বস্তুর থেকে দৃশ্যমান হয়।

আপনি যদি এই বিকল্পটি ব্যবহার না করেন তাহলে, ডায়নামিক প্রতীক সারণিতে কেবলমাত্র সেই চিহ্নগুলি থাকবে যা লিঙ্কের মধ্যে উল্লিখিত কিছু গতিশীল বস্তুর দ্বারা উল্লিখিত হয়।

যদি আপনি একটি ডায়নামিক বস্তুটি লোড করতে "dlopen" ব্যবহার করেন যা প্রোগ্রামের দ্বারা সংজ্ঞায়িত প্রতীকগুলির অন্য কোন গতিশীল বস্তুর পরিবর্তে ফেরত পাঠানোর প্রয়োজন হয় তাহলে প্রোগ্রামটি লিঙ্ক করার সময় আপনাকে সম্ভবত এই বিকল্পটি ব্যবহার করতে হবে।

আউটপুট ফরম্যাটটি যদি এটি সমর্থন করে তবে আপনি ডায়নামিক প্রতীক সারণিতে কি চিহ্নগুলি যোগ করা উচিত তা নিয়ন্ত্রণ করতে সংস্করণ স্ক্রিপ্টটি ব্যবহার করতে পারেন। @ রেফ {VERSION} এ --version-script- এর বিবরণটি দেখুন।

-EB

বড় endian বস্তু লিঙ্ক এটি ডিফল্ট আউটপুট ফরম্যাটকে প্রভাবিত করে।

-EL

সামান্য- endian বস্তু লিঙ্ক এটি ডিফল্ট আউটপুট ফরম্যাটকে প্রভাবিত করে।

-f

- ডায়াবেটিসের নাম

একটি ELF তৈরি বস্তু তৈরি করার সময়, নির্দিষ্ট নামতে অভ্যন্তরীণ DT_AUXILIARY ক্ষেত্রটি সেট করুন। এটি ডাইনামিক লিঙ্কারকে বলছে যে ভাগ করা বস্তুর প্রতীক সারণি ভাগ বস্তুর নামটির প্রতীক সারণিতে একটি সহায়ক ফিল্টার হিসাবে ব্যবহার করা উচিত।

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

এই বিকল্পটি একাধিকবার নির্দিষ্ট করা যেতে পারে। DT_ অক্জিলিয়ারী এন্ট্রিগুলি ক্রমানুসারে তৈরি করা হবে যাতে তারা কমান্ড লাইনে উপস্থিত হয়।

-ফ নাম

--ফিলার নাম

একটি ELF তৈরি বস্তু তৈরি করার সময়, নির্দিষ্ট নামতে অভ্যন্তরীণ DT_FILTER ফিল্ডটি সেট করুন। এটি ডাইনামিক লিঙ্কারকে বলে যে ভাগ করা বস্তুর প্রতীক সারণিটি তৈরি বস্তুটির প্রতীক সারণির ফিল্টার হিসাবে ব্যবহার করা উচিত।

যদি আপনি পরে এই ফিল্টার বস্তুর বিরুদ্ধে একটি প্রোগ্রাম লিঙ্ক, তারপর, আপনি প্রোগ্রাম চালানোর সময়, গতিশীল লিঙ্ককারী DT_FILTER ক্ষেত্রটি দেখতে হবে। ডায়নামিক লিঙ্কারটি ফিল্টার বস্তুর প্রতীক সারণির মতই স্বাভাবিক হিসাবে সংশ্লেষণ করবে, তবে প্রকৃতপক্ষে সেটি ভাগ বস্তুর নাম পাওয়া সংজ্ঞাগুলির সাথে লিঙ্ক করবে। এইভাবে বস্তুর নাম দ্বারা প্রদত্ত প্রতীকগুলির একটি উপসেট নির্বাচন করতে ফিল্টার বস্তু ব্যবহার করা যেতে পারে।

কিছু পুরোনো লিঙ্কার ইনপুট এবং আউটপুট বস্তুর উভয় ফাইলের জন্য বস্তুর ফাইল ফরম্যাট নির্দিষ্ট করার জন্য একটি সংকলন টুলচেন জুড়ে -F বিকল্প ব্যবহার করেছেন। GNU লিঙ্কার এই উদ্দেশ্যে অন্যান্য পদ্ধতি ব্যবহার করে: -বি , --format , --oformat বিকল্পগুলি, লিঙ্কার স্ক্রিপ্টগুলিতে "TARGET" কমান্ড এবং "GNUTARGET" এনভায়রনমেন্ট ভেরিয়েবল। একটি ELF ভাগ বস্তুর তৈরি না হলে GNU লিঙ্কার -F বিকল্পটি উপেক্ষা করবে।

-ফিনি নাম

একটি ELF এক্সিকিউটেবল বা ভাগ করা বস্তু তৈরি করার সময়, ফাংশনের ঠিকানায় DT_FINI সেটিং করে এক্সিকিউটেবল বা ভাগ করা বস্তুটি আনলোড করা হলে NAME কে কল করুন। ডিফল্টভাবে, লিঙ্ককারী ফাংশন হিসাবে "_fini" ব্যবহার করে কল করতে।

-G

উপেক্ষা করেছেন। অন্যান্য সরঞ্জাম সহ সামঞ্জস্যের জন্য প্রদান

-জি মান

- জিপিএসাইজ = মান

জিপি নিবন্ধন আকার ব্যবহার করে অপ্টিমাইজড বস্তুর সর্বাধিক আকার সেট করুন। এটি শুধুমাত্র বস্তুর ফাইল ফরম্যাটের জন্য অর্থপূর্ণ যা MIPS ECOFF যা বড় এবং ছোট বস্তুগুলিকে বিভিন্ন বিভাগে স্থাপন করে। এটি অন্য অবজেক্টের ফাইল ফরম্যাটের জন্য উপেক্ষা করা হয়।

-হ নাম

-সোময় = নাম

একটি ELF তৈরি বস্তু তৈরি করার সময়, নির্দিষ্ট নামটিতে অভ্যন্তরীণ DT_SONAME ফিল্ডটি সেট করুন। যখন একটি এক্সিকিউটেবল একটি ভাগ করা বস্তুর সাথে সংযুক্ত হয় যার একটি DT_SONAME ক্ষেত্র থাকে, তখন এক্সিকিউটেবল ডায়নামিক লিঙ্কার চালানো হলে লিঙ্কারকে দেওয়া ফাইলের নাম ব্যবহার করার পরিবর্তে DT_SONAME ফিল্ড দ্বারা নির্ধারিত ভাগ বস্তুটি লোড করার চেষ্টা করবে।

-i

একটি ক্রমবর্ধমান লিঙ্ক সম্পাদন করুন (বিকল্প- আর হিসাবে একই)।

-নাম নাম

একটি ELF এক্সিকিউটেবল বা ভাগ করা বস্তু তৈরি করার সময়, ফাংশনের ঠিকানায় DT_INIT সেটিং দ্বারা এক্সিকিউটেবল বা ভাগ করা বস্তু লোড করা হলে NAME কে কল করুন। ডিফল্টভাবে, লিঙ্ককারী ফাংশনটি কল করার জন্য "_init" ব্যবহার করে।

-লি আর্কাইভ

- লাইব্রেরী = সংরক্ষণাগার

আর্কাইভ ফাইল আর্কাইভ লিঙ্ক লিঙ্ক ফাইলের তালিকা। এই বিকল্পটি কতবার ব্যবহার করা যেতে পারে ld নির্দিষ্ট প্রতিটি আর্কাইভের জন্য "libarchive.a" এর ঘটনার জন্য তার পথ তালিকা অনুসন্ধান করবে।

শেয়ার্ড লাইব্রেরি সমর্থিত সিস্টেমগুলিতে, ld ".a" ব্যতীত এক্সটেনশনগুলির সাথে লাইব্রেরি অনুসন্ধান করতে পারে। বিশেষত, ELF এবং সানওএস সিস্টেমে, ".a" এক্সটেনশনের সাথে অনুসন্ধানের পূর্বে ".so" এক্সটেনশনের একটি লাইব্রেরির জন্য একটি ডিরেক্টরি অনুসন্ধান করবে। কনভেনশন অনুসারে, একটি ".so" এক্সটেনশন শেয়ার্ড লাইব্রেরি নির্দেশ করে।

লিঙ্কার শুধুমাত্র একবার আর্কাইভটি অনুসন্ধান করবে, যেখানে এটি কমান্ড লাইনের উপর নির্দিষ্ট করা আছে। যদি আর্কাইভ একটি প্রতীক নির্ধারণ করে যা কোন অবজেক্টে অনির্ধারিত ছিল যা আর্কাইভের আগে কমান্ড লাইনের সামনে উপস্থিত ছিল, তাহলে লিঙ্কারটি সংরক্ষণাগার থেকে উপযুক্ত ফাইল (গুলি) অন্তর্ভুক্ত করবে। যাইহোক, কমান্ড লাইন পরে উপস্থিত একটি বস্তুর একটি অনির্ধারিত প্রতীক লিঙ্কার আবার আর্কাইভ অনুসন্ধান করতে কারণ হবে না।

দেখুন - ( একাধিক বার আর্কাইভগুলি অনুসন্ধানের জন্য লিঙ্কারকে জোর করার জন্য একটি বিকল্প।

আপনি কমান্ড লাইনের একই আর্কাইভ একাধিক বার তালিকা করতে পারেন।

এই ধরনের আর্কাইভ অনুসন্ধান ইউনিক্স লিঙ্কারগুলির জন্য আদর্শ। যাইহোক, যদি আপনি ld onAIX ব্যবহার করছেন তবে লক্ষ্য করুন এটি AIX লিঙ্কারের আচরণ থেকে ভিন্ন।

-ল সার্চডির

- লাইব্রেরী-পাথ = সার্চডির

পাথ অনুসন্ধান তালিকাটি যোগ করুন যা ld অজানা লাইব্রেরি এবং ld নিয়ন্ত্রণ স্ক্রিপ্টগুলির জন্য অনুসন্ধান করবে। আপনি এই বিকল্পটি কতবার ব্যবহার করতে পারেন। ডিরেক্টরিগুলি কমান্ড লাইনে নির্দেশিত ক্রম অনুসারে অনুসন্ধান করা হয়। কমান্ড লাইনের উপর নির্দেশিত ডিরেক্টরিগুলি ডিফল্ট ডিরেক্টরিগুলির আগে অনুসন্ধান করা হয়। সব- এল বিকল্প সমস্ত -l বিকল্পের ক্ষেত্রে প্রযোজ্য, কোনও বিকল্পের মধ্যে যেগুলি বিকল্পগুলি প্রদর্শিত হয় তা নির্বিশেষে।

যদি searchdir "=" দিয়ে শুরু হয়, তাহলে "=" sysroot prefix দ্বারা প্রতিস্থাপিত হবে, লিঙ্কটি কনফিগার করা হলে নির্দিষ্ট একটি পাথ।

সন্ধান করা পাথগুলির ডিফল্ট সেট ( -L- এর সাথে নির্দিষ্ট না করা) নির্ভর করে কোন এমুলেশন মোড ld ব্যবহার করা হয়, এবং কিছু ক্ষেত্রে এটি কীভাবে কনফিগার করা হয়েছিল সে সম্পর্কেও।

"SEARCH_DIR" কমান্ডের সাহায্যে পাথগুলি লিঙ্কে স্ক্রিপ্টেও নির্দিষ্ট করা যেতে পারে। ডিরেক্টরিগুলি নির্দেশ করে যে এই নির্দেশটি পয়েন্টে অনুসন্ধান করা হয় যার মধ্যে লিঙ্কার স্ক্রিপ্টটি কমান্ড লাইনে প্রদর্শিত হয়।

এম এমুলেশন

এমুলেশন লিঙ্কার অনুকরণ করুন । আপনি --verbose বা -V বিকল্পগুলি সহ উপলব্ধ emulations তালিকাভুক্ত করতে পারেন।

যদি -m বিকল্পটি ব্যবহার করা হয় না, তবে এমুলিউশনটি "LDEMULATION" পরিবেশগত থেকে নেওয়া হয়, যদি এটি সংজ্ঞায়িত হয়।

অন্যথায়, ডিফল্ট এমুলেশন কীভাবে লিঙ্কার কনফিগার করা হয়েছিল তা নির্ভর করে।

-m

--print-মানচিত্র

প্রমিত আউটপুট একটি লিঙ্ক মানচিত্র মুদ্রণ করুন। একটি লিঙ্ক মানচিত্রটি লিঙ্ক সহ তথ্য সহ তথ্য সরবরাহ করে:

*

যেখানে বস্তুর ফাইল এবং প্রতীক মেমরিতে ম্যাপ করা হয়।

*

কিভাবে সাধারণ চিহ্ন বরাদ্দ করা হয়।

*

সমস্ত আর্কাইভ সদস্য লিঙ্ক অন্তর্ভুক্ত, চিহ্নের একটি উল্লেখ সঙ্গে যা আর্কাইভ সদস্য আনা করা হবে।

-n

--nmagic

পৃষ্ঠাগুলির পৃষ্ঠার প্রান্তিককরণ বন্ধ করুন এবং সম্ভব হলে "NMAGIC" হিসাবে আউটপুট চিহ্নিত করুন।

-n

--omagic

পাঠ্য এবং ডেটা বিভাগগুলিকে পাঠযোগ্য এবং লিখনযোগ্য হিসাবে সেট করুন। এছাড়াও, ডেটা সেগমেন্টের পৃষ্ঠা-সংখ্যার সাইন ইন করবেন না এবং ভাগ লাইব্রেরিগুলির সাথে লিঙ্কিং অক্ষম করুন। যদি আউটপুট ফরম্যাটটি ইউনিক্স স্টাইল জাদু সংখ্যা সমর্থন করে তবে আউটপুটটি "OMAGIC" হিসাবে চিহ্নিত করুন।

--no-omagic

এই বিকল্পটি- N বিকল্পের বেশিরভাগ প্রভাবকে অগ্রাহ্য করে। এটি পাঠ্য বিভাগকে শুধুমাত্র পাঠযোগ্য হিসাবে সেট করে, এবং পৃষ্ঠা-সংখ্যার জন্য ডেটা সেগমেন্টকে শক্তিশালী করে। দ্রষ্টব্য - এই বিকল্পটি ভাগ লাইব্রেরিগুলির সাথে লিঙ্ক করা সক্ষম করে না। এই জন্য ব্যবহার -ব্যাণয়নশীল

-ও আউটপুট

- আউটপুট = আউটপুট

Ld দ্বারা উত্পাদিত প্রোগ্রামের জন্য নাম হিসাবে আউটপুট ব্যবহার করুন; যদি এই বিকল্পটি নির্দিষ্ট না হয়, তবে নাম a.out ডিফল্টরূপে ব্যবহৃত হয়। স্ক্রিপ্ট কমান্ড "OUTPUT" এছাড়াও আউটপুট ফাইল নাম উল্লেখ করতে পারেন।

-O স্তর

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

-q

--emit-relocs

স্থানান্তর বিভাগ এবং সম্পূর্ণরূপে সংযুক্ত exececutables মধ্যে বিষয়বস্তু ছেড়ে। পোস্ট লিঙ্ক বিশ্লেষণ এবং অপ্টিমাইজেশান সরঞ্জাম এক্সিকিউটেবলের সঠিক সংশোধন করতে এই তথ্য প্রয়োজন হতে পারে। এটি বড় এক্সিকিউটেবলের ফলাফল।

এই বিকল্পটি বর্তমানে শুধুমাত্র ELF প্ল্যাটফর্মে সমর্থিত।

-r

--relocateable

পুনর্বিন্যাসযোগ্য আউটপুট তৈরি করুন --- অর্থাত্, একটি আউটপুট ফাইল তৈরি করুন যা পরিবর্তে ld রূপে ইনপুট হিসাবে পরিবেশন করতে পারে। এটি প্রায়ই আংশিক লিঙ্কিং বলা হয়। একটি পার্শ্ব প্রতিক্রিয়া হিসাবে, আদর্শ ইউনিক্স জাদুকর সংখ্যা সমর্থন করে এমন পরিবেশে, এই বিকল্পটি আউটপুট ফাইলের জাদু সংখ্যা "OMAGIC" তে সেট করে। এই বিকল্পটি নির্দিষ্ট না হলে, একটি পরম ফাইল উত্পাদিত হয়। C ++ প্রোগ্রামগুলি লিঙ্ক করার সময়, এই বিকল্পটি কন্সট্রাকটরগুলির রেফারেন্সগুলি সমাধান করবে না ; এটা করতে, ব্যবহার করুন -আরো

যখন একটি ইনপুট ফাইলের আউটপুট ফাইল হিসাবে একই বিন্যাস নেই, আংশিক লিঙ্কিং শুধুমাত্র সমর্থিত হলে ইনপুট ফাইলে যে কোনো পুনর্বিবেচনা থাকে না বিভিন্ন আউটপুট ফরম্যাটের আরো সীমাবদ্ধতা থাকতে পারে; উদাহরণস্বরূপ কিছু "a.out" - বিন্যস্ত ফরম্যাটগুলি অন্য ফরম্যাটে ইনপুট ফাইলগুলির সাথে আংশিক লিঙ্কিংকে সমর্থন করে না।

এই বিকল্পটি একই জিনিস হিসাবে -i

-আর ফাইলের নাম

--অন্য-প্রতীক = ফাইলের নাম

ফাইলের নাম থেকে প্রতীক নাম এবং তাদের ঠিকানাগুলি পড়ুন, কিন্তু এটি পুনঃস্থাপন করবেন না বা এটি আউটপুট অন্তর্ভুক্ত করবেন না। এটি আপনার আউটপুট ফাইলটি অন্যান্য প্রোগ্রামগুলিতে সংজ্ঞায়িত মেমরির নিখরচায় সিম্বলিকভাবে উল্লেখ করার অনুমতি দেয়। আপনি একাধিকবার এই বিকল্পটি ব্যবহার করতে পারেন।

অন্যান্য ELF লিঙ্কারগুলির সাথে সঙ্গতির জন্য, যদি -R বিকল্পটি একটি ফাইলের নামের পরিবর্তে একটি ডিরেক্টরী নাম দ্বারা অনুসরণ করা হয়, এটি -rpath বিকল্প হিসেবে গণ্য করা হয়।

-s

--strip সব

আউটপুট ফাইল থেকে সমস্ত প্রতীক তথ্য বাতিল করুন

-S

--strip-ডিবাগ

আউটপুট ফাইল থেকে ডিবাগার চিহ্ন তথ্য (কিন্তু সব চিহ্ন নয়) বাদ দিন

-t

--trace

ইনপুট ফাইলগুলির নামগুলি ld হিসাবে প্রিন্ট করে তাদের প্রসেস করুন।

-T স্ক্রিপ্ট ফাইল

--স্ক্রিপ্ট = স্ক্রিপ্ট ফাইল

লিঙ্কার স্ক্রিপ্ট হিসাবে স্ক্রিপ্ট ফাইল ব্যবহার করুন। এই স্ক্রিপ্টটি ld এর ডিফল্ট লিঙ্কার স্ক্রিপ্ট প্রতিস্থাপন করে (এটিতে যোগ করার পরিবর্তে), তাই কমান্ডফিলের আউটপুট ফাইলটি বর্ণনা করার জন্য প্রয়োজনীয় সবকিছু উল্লেখ করা আবশ্যক। বর্তমান ডিরেক্টরির মধ্যে যদি স্ক্রিপ্ট ফাইল বিদ্যমান না থাকে, তবে "ld" কোন পূর্ববর্তী- এল বিকল্প দ্বারা চিহ্নিত ডিরেক্টরির মধ্যে এটির জন্য অনুসন্ধান করে। একাধিক টি বিকল্প সংগ্রহ করা।

-উ চিহ্ন

- সুনির্দিষ্ট = চিহ্ন

একটি অনির্ধারিত প্রতীক হিসাবে আউটপুট ফাইলের মধ্যে প্রবেশ করার জন্য ফোর্স প্রতীক। এটি করতে পারে, উদাহরণস্বরূপ, স্ট্যান্ডার্ড লাইব্রেরির অতিরিক্ত মডিউলগুলি সংযুক্ত করা। -u অতিরিক্ত অনির্ধারিত প্রতীক লিখতে বিভিন্ন বিকল্প আর্গুমেন্ট সঙ্গে পুনরাবৃত্তি হতে পারে। এই বিকল্প "EXTERN" লিঙ্কার স্ক্রিপ্ট কমান্ডের সমতুল্য।

-Ur

C ++ প্রোগ্রাম ছাড়া অন্য কিছু করার জন্য, এই বিকল্পটি -r এর সমতুল্য: এটি স্থানচ্যুত আউটপুট উৎপন্ন করে --- অর্থাৎ, একটি আউটপুট ফাইল যা পরিবর্তে ld রূপে ইনপুট হিসাবে পরিবেশন করতে পারে। C ++ প্রোগ্রামগুলি লিঙ্ক করার সময়, - কূটনীতিকদের রেফারেন্সগুলি সমাধান করে - আর -র এটি ব্যবহার করার জন্য কাজ করে না - যেগুলি তাদের সাথে সংযুক্ত ছিল -Ur ; একবার কন্সট্রাকটর টেবিল তৈরি হয়ে গেলে, এটি যোগ করা যাবে না। ব্যবহার করুন -মাত্র শেষ আংশিক লিঙ্কের জন্য, এবং -র অন্যদের জন্য।

--বিশেষ [= বিভাগ ]

প্রতিটি ইনপুট শাখার SECTION মিলে একটি আলাদা আউটপুট বিভাগ তৈরি করে, অথবা প্রতি অনাথ ইনপুট বিভাগের জন্য ঐচ্ছিক ওয়াইল্ডকার্ড SECTION আর্গুমেন্ট অনুপস্থিত থাকলে। একটি অনাথ অংশ একটি লিঙ্কার স্ক্রিপ্টে বিশেষভাবে উল্লেখ করা হয় না। আপনি কমান্ড লাইনে এই বিকল্পটি বহুবার ব্যবহার করতে পারেন; এটি একই নামে ইনপুট বিভাগের সাধারণ মার্জকে বাধা দেয়, একটি লিঙ্কার স্ক্রিপ্টে আউটগ্রাউন্ড আউটপুট বিভাগের অ্যাসাইনমেন্টগুলি।

-v

--version

-V

Ld এর জন্য সংস্করণ সংখ্যা প্রদর্শন করুন -ভি বিকল্পটি সমর্থিত ইমুলেশনগুলির তালিকাও রয়েছে।

-এক্স

--discard সব

সমস্ত স্থানীয় চিহ্ন মুছে দিন।

-এক্স

--discard-স্থানীয়দের

সব অস্থায়ী স্থানীয় চিহ্ন মুছে দিন। সর্বাধিক লক্ষ্যগুলির জন্য, এই সমস্ত স্থানীয় প্রতীক যাদের নাম এল দিয়ে শুরু হয়

-ই চিহ্ন

--trace-symbol = symbol

প্রতিটি লিঙ্কযুক্ত ফাইলের নামটি মুদ্রণ করুন যা সংকেত প্রদর্শিত হবে। এই বিকল্পটি অনেক বার দেওয়া যেতে পারে। অনেকগুলি সিস্টেমে এটি একটি আন্ডারস্কোর অন্তর্ভুক্ত করা প্রয়োজন।

এই বিকল্পটি যখন আপনার লিংকের মধ্যে একটি অনির্ধারিত প্রতীক রয়েছে তখন এটি কার্যকর হয় কিন্তু রেফারেন্সটি কোথা থেকে আসছে তা জানা নেই।

-ই পথ

ডিফল্ট লাইব্রেরির অনুসন্ধান পাথের পথ যোগ করুন। এই বিকল্পটি সোলারিস সামঞ্জস্যের জন্য বিদ্যমান।

-z কীওয়ার্ড

স্বীকৃত কীওয়ার্ডগুলি "initfirst", "interpose", "loadfltr", "nodefaultlib", "নোডিয়েট", "নোডলোপেন", "নোডাম্প", "এখন", "উত্স", "সমঝোতা", "নোকম্ব্রেলক" এবং "নোকোপিরেপলক "। অন্যান্য কীওয়ার্ডগুলি সোলারিস সামঞ্জস্যের জন্য উপেক্ষা করা হয়। "initfirst" বস্তুটি অন্য কোন অবজেক্টের আগে রানটাইম এ প্রথম ইনিশিয়াল করার জন্য চিহ্নিত করে। "ইন্টারপেক্ট" চিহ্নটি অবজেক্টকে চিহ্নিত করে যে তার প্রতীক সারণিটি সমস্ত প্রতীকগুলির আগেই প্রযোজ্য কিন্তু প্রাথমিক এক্সিকিউটেবল। "লোডফ্লর্ট" বস্তুটি চিহ্নিত করে যে তার ফাইলগুলি রানটাইম এ অবিলম্বে প্রসেস করা হয়। "নোডফ্লাথলিব" বস্তুটি চিহ্নিত করে যে এই অবজেক্টের নির্ভরশীলতার অনুসন্ধানটি উপেক্ষা করবে কোন ডিফল্ট লাইব্রেরী অনুসন্ধান পাথ। "নোডিয়েট" চিহ্নটি লক্ষ্য করে অবজেক্ট রানটাইম এ আনলড করা উচিত নয়। "নোডলোপেন" চিহ্নটি বস্তুটি "ডলোপেন" তে উপলব্ধ নয় বলে চিহ্নিত করে। "নোডাম্প" চিহ্নটি অবজেক্টকে "ডলডাম্প" ডাম্প করা যাবে না। "এখন" অ অলস রানটাইম বাইন্ডিং সঙ্গে বস্তু চিহ্নিত করে। "মূল" চিহ্ন বস্তু $ ORIGIN থাকতে পারে। "ডিফল্ট" অনির্ধারিত প্রতীককে অনুমোদন করে না। "muldefs" একাধিক সংজ্ঞা অনুমোদন করে। "combreloc" একাধিক reloc বিভাগগুলিকে সংমিশ্রণ করে এবং তাদের গতিশীল প্রতীকের সন্ধান করতে ক্যাশিংকে সম্ভব করতে পারে।

"nocombreloc" একাধিক reloc বিভাগগুলি সংযোজন অক্ষম করে। "নোকোপিরেপেলোক" কপি রিল্সের উৎপাদন অক্ষম করে।

- ( আর্কাইভ -)

- স্টার্ট-গ্রুপ আর্কাইভ - -অন্য-গ্রুপ

সংরক্ষণাগার আর্কাইভ ফাইলগুলির একটি তালিকা হওয়া উচিত। তারা সুনির্দিষ্ট ফাইল নাম, বা -l বিকল্প হতে পারে।

কোন নতুন অনির্ধারিত রেফারেন্সগুলি তৈরি না হওয়া পর্যন্ত নির্দিষ্ট আর্কাইভ বারবার অনুসন্ধান করা হয়। সাধারনত, একটি আর্কাইভ কেবলমাত্র একবারে অনুসন্ধান করা হয় যাতে এটি কমান্ড লাইনে নির্দিষ্ট করা হয়। যদি ঐ আর্কাইভের একটি প্রতীকটি একটি অনির্ধারিত প্রতীককে সংশোধন করার জন্য প্রয়োজন হয় যা একটি আর্কাইভের মধ্যে উল্লেখ করা হয় যা পরে কমান্ড লাইনের উপর প্রদর্শিত হয়, তাহলে লিঙ্কার এই রেফারেন্সটি সমাধান করতে সক্ষম হবে না। আর্কাইভ গ্রুপিং দ্বারা, তারা সবগুলি সম্ভাব্য রেফারেন্স সমাধান করা হয় পর্যন্ত বারবার অনুসন্ধান করা।

এই বিকল্প ব্যবহার করে একটি উল্লেখযোগ্য কার্যকারিতা খরচ রয়েছে। দুই বা ততোধিক আর্কাইভের মধ্যে অনিবার্য বৃত্তাকার রেফারেন্স থাকলেই এটি ব্যবহার করা সবচেয়ে ভাল।

--accept-অজানা-ইনপুট-খিলান

--no-গ্রহণ-অজানা-ইনপুট-খিলান

লিঙ্কারকে ইনপুট ফাইলগুলি স্বীকার করতে বলছে যার আর্কিটেকচারটি স্বীকৃত হতে পারে না। ধারণাটি হল যে ব্যবহারকারী জানেন যে তারা কী করছে এবং ইচ্ছাকৃতভাবে এই অজানা ইনপুট ফাইলগুলিতে সংযোগ করতে চায়। এই লিঙ্কার ডিফল্ট আচরণ ছিল, প্রকাশনার পূর্বে 2.14। রিলিজ 2.14 থেকে ডিফল্ট আচরণ যেমন ইনপুট ফাইল প্রত্যাখ্যান করা হয়, এবং তাই পুরানো আচরণটি পুনরুদ্ধার করতে --cept-unknown-input-arch বিকল্পটি যোগ করা হয়েছে।

-শার্ট কিওয়ার্ড

এই বিকল্পটি SunOS সামঞ্জস্যের জন্য উপেক্ষা করা হয়।

-Bdynamic

-dy

-call_shared

গতিশীল লাইব্রেরির সাথে লিঙ্ক। এই প্ল্যাটফর্মের জন্য শুধুমাত্র অর্থপূর্ণ হয় যার জন্য ভাগ করা লাইব্রেরিগুলি সমর্থিত। এই বিকল্পটি সাধারণত এই ধরনের প্ল্যাটফর্মে ডিফল্ট হয়। এই বিকল্পের বিভিন্ন বৈকল্পিক বিভিন্ন সিস্টেমের সাথে সামঞ্জস্যের জন্য। আপনি এই বিকল্পটি কমান্ড লাইনের একাধিক বার ব্যবহার করতে পারেন: এটি -l বিকল্পগুলি অনুসন্ধান করার জন্য লাইব্রেরীকে প্রভাবিত করে।

-Bgroup

গতিশীল বিভাগের "DT_FLAGS_1" এন্ট্রিটিতে "DF_1_GROUP" পতাকা সেট করুন। এই রানটাইম লিঙ্কারটি এই বস্তুতে নজরদারি পরিচালনা করে এবং এর ভিত্তিটি কেবল গোষ্ঠীর ভিতরে সঞ্চালিত হবে। - কোন অনির্ধারিত নিহিত হয়। এই বিকল্পটি শুধুমাত্র ELF প্লাটফর্মে অর্থপূর্ণ, যা ভাগ লাইব্রেরি সমর্থন করে

-Bstatic

-dn

-non_shared

-static

ভাগ লাইব্রেরিগুলির সাথে লিঙ্ক করবেন না। এই প্ল্যাটফর্মের জন্য শুধুমাত্র অর্থপূর্ণ হয় যার জন্য ভাগ করা লাইব্রেরিগুলি সমর্থিত। এই বিকল্পের বিভিন্ন বৈকল্পিক বিভিন্ন সিস্টেমের সাথে সামঞ্জস্যের জন্য। আপনি এই বিকল্পটি কমান্ড লাইনের একাধিক বার ব্যবহার করতে পারেন: এটি -l বিকল্পগুলি অনুসন্ধান করার জন্য লাইব্রেরীকে প্রভাবিত করে।

-Bsymbolic

একটি ভাগ করা লাইব্রেরি তৈরি করার সময়, শেয়ার্ড লাইব্রেরির মধ্যে বৈশ্বিক প্রতীকগুলির রেফারেন্সগুলি আবদ্ধ করুন, যদি থাকে তবে সাধারনত শেয়ার্ড লাইব্রেরির সংজ্ঞায়িত করা একটি শেয়ার্ড লাইব্রেরির সাথে সংযুক্ত একটি প্রোগ্রামের জন্য এটি সম্ভব। এই বিকল্পটি কেবল ELFplatforms এর অর্থপূর্ণ, যা ভাগ লাইব্রেরি সমর্থন করে।

--check-বিভাগে

--no-চেক-বিভাগে

লিংকের অনুরোধে বলা হয়েছে যে কোনও ওভারল্যাপগুলি দেখতে দেখতে নির্ধারিত হলে সেগুলিকে বিভাগের ঠিকানাগুলি চেক করতে হবে না । সাধারণত লিংককারী এই চেকটি সম্পাদন করবে, এবং যদি এটি কোনও ওভারল্যাপ খুঁজে পায় তবে এটি উপযুক্ত ত্রুটি বার্তাগুলি তৈরি করবে। লিঙ্কার সম্পর্কে জানতে হয় এবং ওভারলেগুলিতে অংশগুলির জন্য ভাতা তৈরি করে। কমান্ড লাইন সুইচ --check-sections ব্যবহার করে ডিফল্ট আচরণ পুনরুদ্ধার করা যেতে পারে।

--cref

একটি ক্রস রেফারেন্স টেবিল আউটপুট। যদি একটি লিঙ্কার মানচিত্র ফাইল তৈরি করা হচ্ছে, ক্রস রেফারেন্স টেবিলটি ম্যাপ ফাইলটিতে মুদ্রিত হয়। অন্যথায়, এটি প্রমিত আউটপুট মুদ্রিত হয়।

সারণির বিন্যাসটি ইচ্ছাকৃতভাবে সহজ, যাতে এটি প্রয়োজনীয়ভাবে একটি স্ক্রিপ্ট দ্বারা সহজেই প্রক্রিয়া হতে পারে। চিহ্নগুলি মুদ্রিত হয়, নাম অনুসারে বাছাই করা হয়। প্রতিটি প্রতীকের জন্য, ফাইলের নামের একটি তালিকা দেওয়া হয়। যদি প্রতীকটি সংজ্ঞায়িত করা হয়, তাহলে তালিকাভুক্ত প্রথম ফাইল হল সংজ্ঞাটির অবস্থান। বাকি ফাইলগুলি প্রতীকের রেফারেন্স ধারণ করে।

--no-সংজ্ঞায়িত-সাধারণ

এই বিকল্পটি সাধারণ প্রতীকগুলিতে ঠিকানাগুলির কার্যকরণকে অবরুদ্ধ করে। স্ক্রিপ্ট কমান্ড "INHIBIT_COMMON_ALLOCATION" একই প্রভাব আছে।

--no-define-common বিকল্পটি আউটপুট ফাইলের প্রকারের পছন্দ থেকে সাধারণ চিহ্নগুলিতে ঠিকানাগুলিকে বরাদ্দ করার সিদ্ধান্তটিকে decoupling করতে দেয়; অন্যথায় একটি অ-লোকেটিংযোগ্য আউটপুট টাইপ বাহিনীগুলি সাধারণ চিহ্নগুলিতে ঠিকানাগুলি প্রদান করে। --no-define-common ব্যবহার করে সাধারণ পাঠ্যগুলিকে কেবল একটি প্রধান প্রোগ্রামে ভাগ করে নেওয়া লাইব্রেরি থেকে রেফার করা হয়। এটি ভাগ করা লাইব্রেরিটিতে অপ্রয়োজনীয় ডুপ্লিকেট স্পেসকে বাদ দেয় এবং রানটাইম প্রতীক রেজোলিউশনের বিশেষ অনুসন্ধান পাথগুলির সাথে অনেকগুলি ডায়নামিক মডিউল রয়েছে যখন ভুল ডুপ্লেকে সমাধান করার জন্য কোনও সম্ভাব্য বিভ্রান্তি বাধা দেয়।

--defsym symbol = expression

আউটপুট ফাইলে একটি বিশ্বব্যাপী প্রতীক তৈরি করুন, যেখানে অভিব্যক্তি দ্বারা প্রদত্ত পরম ঠিকানা রয়েছে। কমান্ড লাইনের একাধিক চিহ্ন নির্ধারণ করার জন্য আপনি এই বিকল্পটি ব্যবহার করতে পারেন। এই অনুচ্ছেদে সীমিত আকারের অনুমান সমর্থিত হয়: আপনি একটি হেক্সাডেসিমেল ধ্রুবক বা বিদ্যমান প্রতীকের নাম দিতে পারেন, অথবা "-" এবং হেক্সাডেসিমাল ধ্রুবক বা প্রতীক যোগ করতে "-" ব্যবহার করতে পারেন। যদি আপনি আরও বিস্তারিত এক্সপ্রেশন প্রয়োজন, একটি স্ক্রিপ্ট থেকে লিঙ্কার কমান্ড ভাষা ব্যবহার বিবেচনা করুন। দ্রষ্টব্য: চিহ্নের মধ্যে কোন সাদা স্থান থাকবে না, সমান চিহ্ন (`` = ''), এবং অভিব্যক্তি

- ডেমনেল [= শৈলী ]

--no-demangle

এই বিকল্পগুলি ত্রুটি বার্তা এবং অন্যান্য আউটপুটের মধ্যে প্রতীক চিহ্নের নাম নির্ণয় কিনা তা নিয়ন্ত্রণ করে। যখন সংযোগকারীটিকে ডিমান্ড করতে বলা হয়, এটি একটি প্রতীকযোগ্য পদ্ধতিতে প্রতীক নাম উপস্থাপন করার চেষ্টা করে: এটি অবজেক্টের ফরম্যাটের ফর্মেট দ্বারা ব্যবহৃত হয়, এবং C ++ জঞ্জালযুক্ত প্রতীক নামগুলি ব্যবহারকারী পাঠযোগ্য নামগুলিতে রূপান্তর করে। বিভিন্ন কম্পাইলার বিভিন্ন mangling শৈলী আছে। আপনার কম্পাইলারের জন্য উপযুক্ত ডিম্বলিং স্টাইল বেছে নেওয়ার জন্য ঐচ্ছিক ডেমং স্টাইলের আর্গুমেন্ট ব্যবহার করা যেতে পারে। যদি এনভায়রনমেন্ট ভেরিয়েবল COLLECT_NO_DEMANGLE সেট করা হয় তবে লিঙ্কার ডিফল্টভাবে ডিমান্ড হবে। এই বিকল্পগুলির ডিফল্টকে অগ্রাহ্য করার জন্য ব্যবহার করা যেতে পারে।

- ডাইনামিক-লিঙ্কার ফাইল

ডাইনামিক লিঙ্কারের নাম সেট করুন। গতিশীলভাবে সংযুক্ত ELF এক্সিকিউটিভ তৈরি করার সময় এটি শুধুমাত্র অর্থবহ। ডিফল্ট ডায়নামিক লিঙ্ককারী সাধারণত সঠিক হয়; এটি ব্যবহার করবেন না যদি না আপনি জানেন যে আপনি কি করছেন।

--embedded-relocs

এমএক্স এমবেডেড পিআইসি কোড লিঙ্ক করার সময় এই বিকল্পটি শুধুমাত্র অর্থবহ হয়, এমএনডিডেড-পিক বিকল্প দ্বারা GNU কম্পাইলার এবং এসেম্বলারে উত্পন্ন। এটি লিঙ্কারকে একটি সারণি তৈরি করতে দেয় যা রানটাইম এ ব্যবহার করা যেতে পারে যা পয়েন্টারের মানগুলি স্ট্যাটিক্যালভাবে আরম্ভ করা কোনও তথ্য পুনঃস্থাপন করতে পারে। বিস্তারিত জন্য testuite / ld-empic কোড দেখুন।

--fatal-সতর্কবার্তা

সমস্ত সতর্কতা ত্রুটি হিসাবে আচরণ

--force-EXE-প্রত্যয়

একটি আউটপুট ফাইল একটি .exe প্রত্যয় আছে তা নিশ্চিত করুন।

যদি একটি সফলভাবে সম্পূর্ন সংযুক্ত লিঙ্কে আউটপুট ফাইলে কোন "। Exe " বা " .dll " প্রত্যয় না থাকে, তাহলে এই বিকল্পটি লিঙ্কারকে ".exe" suffix এর সাথে একই নামের একটিতে আউটপুট ফাইল অনুলিপি করতে বাধ্য করে। মাইক্রোসফ্ট উইন্ডোজ হোস্টে অনির্দিষ্ট ইউনিকস ফাইল তৈরির সময় এই বিকল্পটি কার্যকর। উইন্ডোজ এর কিছু কিছু সংস্করণ একটি ইমেজ রান করবে না, যদি না এটি ".exe" প্রত্যায় সমাপ্ত হয়।

--no-জিসি-বিভাগে

--gc-বিভাগে

অব্যবহৃত ইনপুট বিভাগগুলির আবর্জনা সংগ্রহ সক্ষম করুন। এটি এই বিকল্পটি সমর্থন করে না এমন লক্ষ্যগুলি উপেক্ষা করা হয়। এই বিকল্পটি -r সাথে সামঞ্জস্যপূর্ণ নয়, এটি ডায়নামিক লিঙ্কিংয়ের সাথে ব্যবহার করা উচিত নয়। কমান্ড লাইনের --no-gc-sections উল্লেখ করে ডিফল্ট আচরণ (এই আবর্জনা সংগ্রহ না করা) পুনরুদ্ধার করা যাবে।

--help

প্রমিত আউটপুট এবং প্রস্থান করার জন্য কমান্ড-লাইন বিকল্পগুলির সংক্ষিপ্তসার মুদ্রণ করুন।

--target-সহায়তা

প্রমিত আউটপুট এবং প্রস্থান এর সব লক্ষ্য নির্দিষ্ট বিকল্পগুলির সংক্ষিপ্তসার মুদ্রণ করুন।

-ম্যাপ ম্যাপফাইল

ফাইলের mapfile- এ একটি লিঙ্ক মানচিত্র মুদ্রণ করুন উপরোক্ত এম বিকল্পের বিবরণ দেখুন।

--no-রাখা-মেমরির

ld সাধারণত মেমরির ইনপুট ফাইলের প্রতীক সারণি ক্যাশে মেমরির ব্যবহারে গতির জন্য অনুকূলিত হয়। এই বিকল্পটি ld- র পরিবর্তে মেমরি ব্যবহারের জন্য অপ্টিমাইজ করার প্রয়োজন বোধ করে, যতক্ষণ প্রয়োজনে প্রতীক সারণি পুনর্লিখন করে। একটি বড় এক্সিকিউটেবল লিংক লিঙ্ক করার সময় ld মেমরি স্পেসের বাইরে চলে গেলে এটির প্রয়োজন হতে পারে।

--no-অনির্ধারিত

- ডি ডিফ

স্বাভাবিকভাবে একটি অ-সিম্বলিক শেয়ার্ড লাইব্রেরি তৈরি করার সময়, অনির্ধারিত প্রতীকগুলি অনুমোদিত এবং বামে রানটাইম লোডার দ্বারা সমাধান করা হয়। এই বিকল্পগুলি এই ধরনের অনির্ধারিত চিহ্নগুলি মঞ্জুরি দেয় না।

--allow একাধিক সংজ্ঞা

-জুল মুলদেফ

সাধারণত একটি চিহ্ন বহুবার সংজ্ঞায়িত করা হলে, লিঙ্ককারী একটি মারাত্মক ত্রুটি রিপোর্ট করবে। এই বিকল্প একাধিক সংজ্ঞা অনুমোদন এবং প্রথম সংজ্ঞা ব্যবহার করা হবে।

--allow-shlib-অনির্ধারিত

ভাগ করা বস্তুর অনির্ধারিত প্রতীকগুলির অনুমতি দিন এমনকি যখন --no-undefined সেট করা হয়। নেট ফলাফল হবে যে নিয়মিত বস্তুর অনির্ধারিত চিহ্ন এখনও একটি ত্রুটি ট্রিগার হবে, কিন্তু ভাগ বস্তুর অনির্ধারিত চিহ্ন উপেক্ষা করা হবে। No_undefined এর বাস্তবায়ন ধারণাটি অবলম্বন করে যে রানটাইম লিংকার অনির্ধারিত প্রতীকগুলিতে চিকন হবে। তবে কমপক্ষে একটি সিস্টেম (বিওএস) আছে যেখানে ভাগ লাইব্রেরিগুলিতে অনির্ধারিত চিহ্নগুলি স্বাভাবিক কারণ কার্নেল তাদের লোডের সময় প্যাচ করে যা বর্তমান আর্কিটেকচারের জন্য সবচেয়ে উপযুক্ত। IE গতিশীল একটি উপযুক্ত memset ফাংশন নির্বাচন। স্পষ্টত এটি এইচপিপিএ শেয়ার্ড লাইব্রেরিগুলির জন্য অনির্ধারিত চিহ্ন থাকতে পারে।

--no-undefined-সংস্করণ

সাধারণত একটি প্রতীক একটি অনির্ধারিত সংস্করণ আছে যখন, লিঙ্কার এটি উপেক্ষা করা হবে। এই বিকল্পটি অনির্ধারিত সংস্করণের সাথে প্রতীককে অক্ষম করে এবং একটি মারাত্মক ত্রুটি পরিবর্তে জারি করা হবে।

--no-সতর্ক-মেলেনি

সাধারনভাবে ld একটি ত্রুটি প্রদান করবে যদি আপনি একযোগে ইনপুট ফাইলগুলির সাথে লিঙ্ক করার চেষ্টা করেন যা কোনও কারণে বিফল হয়, সম্ভবত কারণ তারা বিভিন্ন প্রসেসরের জন্য অথবা বিভিন্ন endiannesses এর জন্য কম্পাইল করা হয়েছে এই বিকল্পটি ld কে নির্দেশ করে যে এটি এমন সম্ভাব্য ত্রুটিগুলি চুপি চুপি মঞ্জুর করা উচিত। এই বিকল্পটি শুধুমাত্র যত্ন সহ ব্যবহার করা উচিত, যখন আপনি কিছু বিশেষ পদক্ষেপ গ্রহণ করেন যা নিশ্চিত করে যে লিঙ্কার ত্রুটিগুলি অনুপযুক্ত।

--no-পুরো সংরক্ষণাগার

পরবর্তী আর্কাইভ ফাইলগুলির জন্য -ফুল-আর্কাইভ বিকল্পের প্রভাব বন্ধ করুন।

--noinhibit-Exec

এক্সিকিউটেবল আউটপুট ফাইলটি বজায় রাখুন যখনই এটি এখনও ব্যবহারযোগ্য। সাধারনত, লিঙ্কার একটি আউটপুট ফাইল উত্পন্ন করবে না যদি এটি লিঙ্ক প্রক্রিয়ার সময় ত্রুটি সম্মুখীন হয়; এটি কোনও ত্রুটির সম্মুখীন হলে এটি একটি আউটপুট ফাইল লেখার বাইরে প্রস্থান করে।

-nostdlib

কেবলমাত্র অনুসন্ধান লাইব্রেরির নির্দেশিকাগুলি সরাসরি কমান্ড লাইনে নির্দিষ্ট করা হয়েছে। লিঙ্কার স্ক্রিপ্টগুলিতে নির্দেশিত লাইব্রেরী ডিরেক্টরি (কমান্ড লাইনে নির্দিষ্ট লিঙ্কার স্ক্রিপ্ট সহ) উপেক্ষা করা হয়।

--ফরম্যাট আউটপুট-বিন্যাস

ld একাধিক অবজেক্ট ফাইলকে সমর্থন করতে কনফিগার করা যেতে পারে। যদি আপনার ld এই ভাবে কনফিগার করা হয়, আপনি আউটপুট অবজেক্ট ফাইলের জন্য বাইনারি ফরম্যাটটি নির্দিষ্ট করতে --ফরম্যাট বিকল্পটি ব্যবহার করতে পারেন। এমনকি যখন ld বিকল্প বস্তুর বিন্যাস সমর্থনের জন্য কনফিগার করা হয়, আপনি সাধারণত এটি নির্দিষ্ট করার প্রয়োজন হয় না, কারণ ডিফল্ট আউটপুট ফরম্যাট হিসাবে প্রতিটি মেশিনে সবচেয়ে সাধারণ বিন্যাসে তৈরি করার জন্য ld কনফিগার করা উচিত। আউটপুট-ফরম্যাট হল একটি টেক্সট স্ট্রিং, বিএফডি লাইব্রেরির দ্বারা সমর্থিত একটি নির্দিষ্ট বিন্যাসের নাম। (আপনি objdump -i সঙ্গে উপলব্ধ বাইনারি বিন্যাস তালিকা করতে পারেন।) স্ক্রিপ্ট কমান্ড "OUTPUT_FORMAT" এছাড়াও আউটপুট ফরম্যাট নির্দিষ্ট করতে পারেন, কিন্তু এই বিকল্পটি ওভাররাইড করে।

-qmagic

এই বিকল্পটি লিনাক্সের সামঞ্জস্যের জন্য উপেক্ষা করা হয়।

-Qy

এই বিকল্প SVR4 সামঞ্জস্যের জন্য উপেক্ষা করা হয়।

--relax

মেশিন নির্ভর প্রভাবগুলির সাথে একটি বিকল্প এই বিকল্পটি শুধুমাত্র কয়েকটি লক্ষ্যমাত্রায় সমর্থিত।

কিছু প্ল্যাটফর্মে, --relax বিকল্পটি গ্লোবাল অপ্টিমাইজেশান সঞ্চালিত করে যা লিংকার প্রোগ্রামে অ্যাড্রেসিংকে সংশোধন করে, যেমন শিথিত ঠিকানা মোড এবং আউটপুট অবজেক্ট ফাইলে নতুন নির্দেশাবলী সংশ্লেষণ করে।

কিছু প্ল্যাটফর্মে এই লিংকবলে বিশ্বব্যাপী অপ্টিমাইজেশান ফলস্বরূপ ফলদায়ক অসম্ভবের প্রতীকী ডিবাগিং করতে পারে। এই প্রসেসরের Matsushita MN10200and MN10300 পরিবার জন্য ক্ষেত্রে হিসাবে পরিচিত হয়।

এই সমর্থিত নয় এমন প্ল্যাটফর্মে, --relax গ্রহণ করা হয়, কিন্তু উপেক্ষা করা হয়।

- চুল-চিহ্ন-ফাইল ফাইলের নাম

ফাইল ফাইলের নাম তালিকাভুক্ত সমস্ত প্রতীকগুলি কেবলমাত্র বাদ দিন, অন্য সকলকে বাতিল করে দিন। ফাইলের নামটি কেবল একটি ফ্ল্যাট ফাইল, প্রতি রেখার একটি প্রতীক নাম। এই বিকল্পটি পরিবেশে বিশেষ করে দরকারী (যেমন VxWorks) যেখানে একটি বৃহৎ গ্লোবাল প্রতীক টেবিল ধীরে ধীরে জমা হয়, রান-টাইম মেমরি সংরক্ষণের জন্য।

--reain-symbols-file অনির্ধারিত চিহ্নগুলি, অথবা স্থানান্তরের জন্য প্রয়োজনীয় চিহ্নগুলি বাতিল করে না

আপনি কমান্ড লাইনের মধ্যে কেবলমাত্র --reain-symbols-file- নির্দিষ্ট করতে পারেন এটি ওভাররাইড- গুলি এবং -এস

-পথ দির

রানটাইম লাইব্রেরির অনুসন্ধান পাথে একটি ডিরেক্টরি যুক্ত করুন। ভাগ বস্তুর সঙ্গে ELFexecutable লিঙ্ক যখন এটি ব্যবহার করা হয়। সমস্ত -rpath আর্গুমেন্ট concatenated এবং রানটাইম linker পাস করা হয়, রানটাইম নেভিগেশন ভাগ বস্তু সনাক্ত তাদের ব্যবহার করে যা -পথ বিকল্পটি ব্যবহার করা হয় যখন শেয়ার্ড বস্তু লোকেশন করা হয় যা ভাগ করা বস্তুর দ্বারা নির্দিষ্টভাবে লিঙ্কে অন্তর্ভুক্ত হয়; -rpath- লিঙ্ক বিকল্পের বিবরণ দেখুন যদি ELP এক্সেকিউটেবল যুক্ত করার সময় -rpath ব্যবহার না করা হয়, তবে পরিবেশের পরিবর্তনশীল "LD_RUN_PATH" এর বিষয়বস্তু ব্যবহার করা হবে যদি এটি সংজ্ঞায়িত করা হয়।

-পথ বিকল্পটি SunOS এও ব্যবহার করা যেতে পারে। ডিফল্টভাবে, সানওএস-এ, লিংককারীটি সমস্ত এল- এল বিকল্পগুলি থেকে রানটাইম সার্চ প্যাচ গঠন করবে। যদি -rpath বিকল্পটি ব্যবহার করা হয়, তাহলে -র বিকল্পগুলি উপেক্ষা করে র্যাটটাইম সার্চ পাথটি শুধুমাত্র -rpath বিকল্পগুলি ব্যবহার করেই গঠিত হবে। Gcc ব্যবহার করার সময় এটি প্রয়োগযোগ্য হতে পারে, যা অনেক- এল বিকল্প যোগ করে যা NFS- মাউন্ট করা ফাইল-সিস্টেমের উপর হতে পারে।

অন্যান্য ELF লিঙ্কারগুলির সাথে সঙ্গতির জন্য, যদি -R বিকল্পটি একটি ফাইলের নামের পরিবর্তে একটি ডিরেক্টরী নাম দ্বারা অনুসরণ করা হয়, এটি -rpath বিকল্প হিসেবে গণ্য করা হয়।

-পথ-লিঙ্ক ডিআইআর

ELF বা SunOS ব্যবহার করে, একটি ভাগ লাইব্রেরি অন্য প্রয়োজন হতে পারে। এটি যখন "ld -shared" লিঙ্কটিতে একটি ইনপুট ফাইলগুলির মধ্যে একটি ভাগ লাইব্রেরি রয়েছে তখন এটি ঘটে।

যখন সংযোগকারী এমন একটি নির্ভরশীলতার সাথে মিলিত হয় যখন একটি অ-শেয়ার করা, অস্থায়ী স্থান লিঙ্ক করা হয়, এটি স্বয়ংক্রিয়ভাবে প্রয়োজনীয় ভাগ করা লাইব্রেরিটি সনাক্ত করার চেষ্টা করে এবং এটি লিঙ্কটিতে অন্তর্ভুক্ত করে, যদি এটি স্পষ্টভাবে অন্তর্ভুক্ত না হয়। এই ক্ষেত্রে, -rpath-link বিকল্প অনুসন্ধানের জন্য ডিরেক্টরিগুলির প্রথম সেটকে নির্দিষ্ট করে। -rpath-link বিকল্পটি নামকরণের নামের একটি ক্রম নির্দিষ্ট করে দিতে পারে অথবা কলোনস দ্বারা বিভাজিত নামগুলির তালিকা নির্দিষ্ট করে বা বহুবার প্রদর্শিত হতে পারে।

এই বিকল্পটি সাবধানতার সাথে ব্যবহার করা উচিত কারণ এটি একটি অনুসন্ধান পথকে অগ্রাহ্য করে যা ভাগ করা লাইব্রেরিতে কঠিন কম্পাইল করা হয়েছে। এই ক্ষেত্রে, রানটাইম লিংককারীর চেয়ে আলাদাভাবে একটি ভিন্ন অনুসন্ধান পথ ব্যবহার করা সম্ভব।

প্রয়োজনীয় ভাগ লাইব্রেরিগুলি চিহ্নিত করার জন্য লিঙ্কার নিম্নলিখিত অনুসন্ধান পাথগুলি ব্যবহার করে।

1।

-rpath-link বিকল্পগুলি দ্বারা নির্দিষ্ট করা কোনও ডিরেক্টরি

2।

-rpath বিকল্পগুলি দ্বারা নির্দিষ্ট করা কোনও ডিরেক্টরি। -rpath এবং -rpath- link- এর মধ্যে পার্থক্য হল- -rpath বিকল্পগুলি দ্বারা নির্ধারিত ডিরেক্টরিগুলি এক্সিকিউটেবলের মধ্যে অন্তর্ভুক্ত এবং রানটাইম এ ব্যবহৃত হয়, আর -পথ-লিঙ্ক বিকল্প শুধুমাত্র লিঙ্কের সময় কার্যকর। এটি শুধুমাত্র স্থানীয় লিঙ্কারের জন্য।

3।

ELF সিস্টেমে, যদি -rpath এবং "rpath-link" বিকল্পগুলি ব্যবহার করা হয় নি, তাহলে পরিবেশের পরিবর্তনশীল "LD_RUN_PATH" এর বিষয়বস্তু অনুসন্ধান করুন এটি শুধুমাত্র স্থানীয় লিঙ্কারের জন্য।

4।

SunOS- এ , -rpath বিকল্পটি ব্যবহার না করা হলে, -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 বিদ্যমান থাকে, তবে সেই ফাইলের মধ্যে পাওয়া ডিরেক্টরিগুলির তালিকা।

প্রয়োজনীয় ভাগ করা লাইব্রেরি পাওয়া না গেলে, লিঙ্কার একটি সতর্কতা অবলম্বন করবে এবং লিঙ্কটি চালিয়ে যাবে।

-shared

-Bshareable

একটি ভাগ করা লাইব্রেরি তৈরি করুন। এটি বর্তমানে শুধুমাত্র ELF, XCOFF এবং সানোস প্ল্যাটফর্মগুলিতে সমর্থিত। SunOS- এ, লিঙ্কার স্বয়ংক্রিয়ভাবে একটি ভাগ করা লাইব্রেরি তৈরি করবে যদি -e বিকল্পটি ব্যবহার করা হয় না এবং লিঙ্কটিতে অনির্ধারিত চিহ্ন থাকে।

--sort-সাধারণ

এই বিকল্পটি সঠিকভাবে আউটপুট বিভাগে রাখলে আকারের সাধারণ চিহ্নগুলি সাজানোর জন্য ld কে নির্দেশ করে। প্রথমত, এক এক বাইট চিহ্ন, তারপর দুটি বাইট, তারপর চারটি বাইট এবং তারপর অন্য সবকিছু। এই প্রান্তিককরণ সীমাবদ্ধতার কারণে প্রতীক মধ্যে ফাঁক আটকাতে হয়।

- স্লিপিত দ্বারা ফাইল [ আকার ]

--split-by-reloc- এর অনুরূপ কিন্তু প্রতিটি ইনপুট ফাইলের জন্য একটি নতুন আউটপুট বিভাগ তৈরি করে যখন আকার পৌঁছে যায়। প্রদত্ত না হলে 1 এর আকারের আকারের ডিফল্ট।

--স্লিপ্ট-বাই-রিলক [ গণনা ]

আউটপুট ফাইলের অতিরিক্ত বিভাগগুলি তৈরি করার চেষ্টা করে যাতে ফাইলের কোন একক আউটপুট বিভাগে গণনা পুনর্বিবেচনার তুলনায় অনেক বেশি থাকে। COFF অবজেক্টের ফাইল ফরম্যাটের সাথে নির্দিষ্ট রিয়েল টাইম কার্নেলগুলিতে ডাউনলোড করার জন্য প্রচুর স্থানান্তরিত ফাইল তৈরি করার সময় এটি কার্যকর। যেহেতু COFFcannot একটি একক বিভাগে 65535 অধিক স্থানান্তর প্রতিনিধিত্ব। লক্ষ্য করুন যে এটি অজানা ফাইল ফরম্যাটের সাথে কাজ করতে ব্যর্থ হবে যা অবাধ বিভাগ সমর্থন করে না। লিঙ্কার পুনঃবিবেচনার জন্য পৃথক ইনপুট বিভাগগুলিকে বিভক্ত করবে না, তাই যদি একক ইনপুট অংশে গণনা পুনর্বিবেচনার চেয়ে বেশি থাকে তবে একটি আউটপুট বিভাগে অনেকগুলি স্থানান্তরণ থাকবে। 32768 একটি মান ডিফল্ট গণনা

--stats

লিঙ্কারের অপারেশন সম্পর্কে পরিসংখ্যান এবং পরিসংখ্যান দেখান, যেমন মৃত্যুদন্ডের সময় এবং মেমরি ব্যবহারের

--traditional-বিন্যাসে

কিছু টার্গেটের জন্য, কিছু বিদ্যমান লিঙ্কারের আউটপুট থেকে কিছু উপায়ে LD আউটপুট ভিন্ন হয়। এই সুইচ অনুরোধ ঐতিহ্যগত বিন্যাস ব্যবহার করার জন্য ld ব্যবহার।

উদাহরণস্বরূপ, SunOS এ, ld সংকেত স্ট্রিং টেবিলের ডুপ্লিকেট এন্ট্রিগুলিকে সংমিশ্রণ করে। এটি 30% এর বেশি ডিবাগিং তথ্য সহ একটি আউটপুট ফাইলের আকার কমাতে পারে। দুর্ভাগ্যবশত, SunOS "dbx" প্রোগ্রামটি ফলিত প্রোগ্রামটি পড়তে পারে না ("gdb" কোন সমস্যা নেই)। - ট্র্যাডিশনাল-বিন্যাস সুইচ ডুপ্লিকেট এন্ট্রি একত্রিত না ld বলে।

- অধ্যায়-শুরু sectionname = org

Org দ্বারা প্রদত্ত পরম ঠিকানাতে আউটপুট ফাইলে একটি বিভাগ সনাক্ত করুন। কমান্ড লাইনের একাধিক বিভাগগুলি সনাক্ত করার জন্য আপনি এই বিকল্পটি ব্যবহার করতে পারেন। org একটি একক হেক্সাডেসিমেল পূর্ণসংখ্যার হওয়া আবশ্যক; অন্যান্য লিঙ্কারগুলির সাথে সামঞ্জস্যের জন্য, আপনি প্রধানত হেক্সডেসিমাল মানগুলির সাথে সম্পর্কিত প্রধান 0x বাদ দিতে পারেন। দ্রষ্টব্য: sectionname , সমান চিহ্ন (`` = ''), এবং অর্গান এর মধ্যে কোন সাদা স্থান থাকবে না।

-Tbss org

-তাদের প্রতিষ্ঠান

-প্রাচ্য অর্গানাইজেশন

আরম্ভের ঠিকানা হিসাবে --- যথাক্রমে --- "বিএসএস", "ডেটা" বা আউটপুট ফাইলের "পাঠ্য" বিভাগের জন্য ব্যবহার করুন। org একটি একক হেক্সাডেসিমেল পূর্ণসংখ্যার হওয়া আবশ্যক; অন্যান্য লিঙ্কারগুলির সাথে সামঞ্জস্যের জন্য, আপনি প্রধানত হেক্সডেসিমাল মানগুলির সাথে সম্পর্কিত প্রধান 0x বাদ দিতে পারেন।

--dll-বাগাড়ম্বরপূর্ণ

--verbose

Ld এর জন্য সংস্করণ সংখ্যা প্রদর্শন করুন এবং লিঙ্কার ইমুলেশনগুলি সমর্থিত হবে। কোন ইনপুট ফাইলগুলি খুলতে এবং খোলা যাবে না তা প্রদর্শন করুন। লিঙ্কার দ্বারা ব্যবহৃত লিঙ্কার স্ক্রিপ্ট প্রদর্শন করুন

--version-script = version-scriptfile

লিঙ্কারটিতে একটি সংস্করণ স্ক্রিপ্টের নাম উল্লেখ করুন। এই লাইব্রেরি তৈরি করার জন্য সাধারণত লাইব্রেরিগুলি তৈরি করা হয় যখন তৈরি করা লাইব্রেরি জন্য সংস্করণ উত্তরাধিকার সম্পর্কিত অতিরিক্ত তথ্য উল্লেখ করা। এই বিকল্পটি শুধুমাত্র ELF প্লাটফর্মে অর্থপূর্ণ, যা ভাগ লাইব্রেরি সমর্থন করে।

--warn-সাধারণ

একটি সাধারণ প্রতীক আরেকটি সাধারণ প্রতীক বা একটি প্রতীক সংজ্ঞা সঙ্গে সংযুক্ত করা হয় যখন সতর্ক করুন। ইউনিক্স লিঙ্কার এই কিছুটা ময়লা অনুশীলন করতে দেয়, কিন্তু কিছু অপারেটিং সিস্টেমের সাথে সংযোগকারীগুলিকে না। এই বিকল্পটি আপনাকে বিশ্বব্যাপী প্রতীকগুলি মিশ্রিত সম্ভাব্য সমস্যার সন্ধান করতে দেয়। দুর্ভাগ্যবশত, কিছু সি লাইব্রেরি এই অনুশীলনীটি ব্যবহার করে, তাই আপনি লাইব্রেরিতে এবং সেইসাথে আপনার প্রোগ্রামগুলিতে চিহ্নগুলির বিষয়ে কিছু সতর্কতা পেতে পারেন।

তিন ধরনের বৈশ্বিক প্রতীক আছে, এখানে C উদাহরণ দ্বারা চিত্রিত:

int i = 1;

একটি সংজ্ঞা, যা আউটপুট ফাইলের প্রাথমিক তথ্য বিভাগে যায়।

বহির্বিশ্ব int i;

একটি অনির্ধারিত রেফারেন্স, যা স্থান বরাদ্দ করে না। কোথাও পরিবর্তনশীল জন্য একটি সংজ্ঞা বা একটি সাধারণ প্রতীক হতে হবে।

int i;

একটি সাধারণ চিহ্ন একটি পরিবর্তনশীল জন্য শুধুমাত্র (এক বা একাধিক) সাধারণ চিহ্ন আছে, এটি আউটপুট ফাইলের uninitialized তথ্য এলাকায় যায় লিঙ্কার একই ভেরিয়েবলের জন্য একক প্রতীকে একাধিক সাধারণ চিহ্ন একত্রিত করে। যদি তারা বিভিন্ন মাপের হয়, এটি বৃহত্তম আকার বাছাই করে। লিঙ্কার একটি ঘোষণায় একটি সাধারণ চিহ্ন সক্রিয় করে, যদি একই ভেরিয়েবলের একটি সংজ্ঞা থাকে।

- ওয়ার্ন-সিম্পল বিকল্প পাঁচ ধরণের সতর্কতা তৈরী করতে পারে। প্রতিটি সতর্কবার্তা লাইনের একটি জোড়া রয়েছে: প্রথমটি শুধুমাত্র প্রতীকী প্রতীকটি বর্ণনা করে এবং দ্বিতীয়টি একই নামের সাথে পূর্ববর্তী প্রতীকটি বর্ণনা করে। দুটি প্রতীক এক বা উভয় চিহ্ন একটি সাধারণ প্রতীক হবে।

1।

একটি সংকেত মধ্যে একটি সাধারণ চিহ্ন বাঁক, কারণ ইতিমধ্যে প্রতীক জন্য একটি সংজ্ঞা আছে।

<ফাইল> (<বিভাগ>): সতর্কতা: ` 'এর সংজ্ঞার (
) এর সাধারণ: সতর্কতা: এখানে সংজ্ঞায়িত

2।

একটি সংকেত মধ্যে একটি সাধারণ চিহ্ন বাঁক, কারণ প্রতীক জন্য একটি পরবর্তী সংজ্ঞা সম্মুখীন হয়। এটি পূর্বের ক্ষেত্রেও একই, তদ্ব্যতীত যে প্রতীকগুলির একটি ভিন্ন ক্রমে দেখা যায়।

(
): সতর্কবাণী: ` 'অপ্রতিরোধী সাধারণ <ফাইল> (
) এর সংজ্ঞা: সতর্কতা: সাধারণ এখানে

3।

পূর্ববর্তী একই আকারের সাধারণ প্রতীক সঙ্গে একটি সাধারণ চিহ্ন মার্জ।

(
): সতর্কতা: ` ' (
) একাধিক সাধারণ: সতর্কতা: পূর্ববর্তী সাধারণ এখানে

4।

আগের সাধারণ সাধারণ চিহ্ন দিয়ে একটি সাধারণ প্রতীক মিলেছে

<ফাইল> (<বিভাগ>): সতর্কতা: `সাধারণ 'বৃহৎ সাধারণ <ফাইল> (<বিভাগ>) দ্বারা পুনরাবৃত্তি করা সাধারণ: সতর্কতা: এখানে সাধারণ সাধারণ

5।

পূর্ববর্তী ছোট সাধারণ প্রতীক সঙ্গে একটি সাধারণ চিহ্ন মার্জ। এটি পূর্বের ক্ষেত্রেও একই, তদ্ব্যতীত যে প্রতীকগুলির একটি ভিন্ন ক্রমে দেখা যায়।

(
): সতর্কতা: ` 'সাধারণ সাধারণ <ফাইল> (
) আদ্যোপান্ত: সতর্কতা: এখানে ছোট সাধারণ

--warn-কনস্ট্রাকটর

সতর্ক থাকুন যদি কোনো গ্লোবাল কনস্ট্রাকটর ব্যবহার করা হয়। এটি শুধুমাত্র কিছু বস্তুর ফাইল বিন্যাসের জন্য দরকারী। COFF বা ELF মত বিন্যাসের জন্য, লিঙ্কার গ্লোবাল কনস্ট্রাকটর ব্যবহার সনাক্ত করতে পারে না।

--warn একাধিক জিপি

সতর্ক করুন যদি আউটপুট ফাইলের মধ্যে একাধিক গ্লোবাল পয়েন্টার মান প্রয়োজন হয়। এটি নির্দিষ্ট প্রসেসরের জন্য অর্থপূর্ণ, যেমন আলফা। বিশেষত, কিছু প্রসেসর একটি বিশেষ বিভাগে বড় মূল্যবান ধ্রুবক রাখা। একটি বিশেষ নিবন্ধ (বিশ্বব্যাপী পয়েন্টার) এই বিভাগের মাঝখানে নির্দেশ করে, যাতে স্থিরকারীগুলি বেস-নিবন্ধিত আপেক্ষিক ঠিকানা মোডের মাধ্যমে দক্ষতার সাথে লোড করা যায়। যেহেতু বেস-রেজিস্টার আপেক্ষিক মোডে অফসেট নির্ধারিত এবং অপেক্ষাকৃত ছোট (যেমন, 16 বিট), এটি ধ্রুবক পুলের সর্বাধিক আকার সীমাবদ্ধ করে। সুতরাং, বড় প্রোগ্রামগুলিতে, সব সম্ভাব্য স্থিতাবস্থার সাথে যোগাযোগ করতে সক্ষম হওয়ার জন্য একাধিক গ্লোবাল পয়েন্টার মানগুলি ব্যবহার করা আবশ্যক। এই বিকল্পটি যখন ঘটে তখন এই বিকল্পটি জারি করা একটি সতর্কতা জারি করে।

--warn-একবার

শুধুমাত্র প্রতিটি অনির্ধারিত প্রতীক জন্য একবার সতর্ক, একবার প্রতি মডিউল যা প্রতি নির্দেশ করে।

--warn-ধারা-সারিবদ্ধ

সতর্কতা কারণ একটি আউটপুট বিভাগের ঠিকানা পরিবর্তন করা হয় কারণ সতর্কতা। সাধারণত, সন্নিবেশ একটি ইনপুট বিভাগ দ্বারা সেট করা হবে। স্পষ্টভাবে নির্দিষ্ট না হলে ঠিকানা শুধুমাত্র পরিবর্তন করা হবে; যে, যদি "SECTIONS" কমান্ডটি বিভাগের জন্য একটি প্রাথমিক ঠিকানা উল্লেখ করে না।

--whole-সংরক্ষণাগার

--whole-archive বিকল্পের পরে কমান্ড লাইনে উল্লিখিত প্রতিটি আর্কাইভের জন্য প্রয়োজনীয় বস্তুর ফাইলগুলির জন্য আর্কাইভ অনুসন্ধানের পরিবর্তে লিঙ্কটিতে আর্কাইভের প্রতিটি বস্তুর ফাইল অন্তর্ভুক্ত করুন। সাধারণত এটি একটি আর্কাইভ ফাইলকে একটি ভাগ করা লাইব্রেরিতে রূপান্তর করার জন্য ব্যবহার করা হয়, ফলে প্রতিটি বস্তুর ক্রমাগত ভাগ লাইব্রেরিতে অন্তর্ভুক্ত করা হয়। এই বিকল্পটি একাধিকবার ব্যবহার করা যেতে পারে।

জি-সি-সি থেকে এই বিকল্পটি ব্যবহার করার সময় দুটি নোট: প্রথমত, জি সি সি এই বিকল্পটি সম্পর্কে কিছুই জানে না, তাই আপনাকে ব্যবহার করতে হবে -Wl, -whole-archive । দ্বিতীয়, আর্কাইভগুলির তালিকা -Wl, -no-full-archive- ব্যবহার করার জন্য ভুলবেন না, কারণ gcc আপনার লিঙ্কের আর্কাইভগুলির নিজস্ব তালিকা জুড়বে এবং আপনি এই ফ্ল্যাগগুলিকেও সেইভাবে প্রভাবিত করতে চাইবেন না।

- মোড়ানো চিহ্ন

প্রতীক জন্য একটি wrapper ফাংশন ব্যবহার করুন। প্রতীকটির কোনও অনির্ধারিত রেফারেন্স "__ র্যাপ_সামবোল" এ সমাধান করা হবে। "__real_symbol" এর কোনও অনির্ধারিত রেফারেন্সটি প্রতীক রূপে সমাধান করা হবে।

এটি একটি সিস্টেম ফাংশন জন্য একটি wrapper প্রদান করতে ব্যবহার করা যেতে পারে। Wrapper ফাংশনকে "__wrap_symbol" বলা উচিত। যদি এটি সিস্টেমের ফাংশনটি কল করতে চায় তবে এটি "__ বাস্তব_সেম্বল" নামক কল করা উচিত।

এখানে একটি তুচ্ছ উদাহরণ:

অকার্যকর * __wrap_malloc (int c) {printf ("malloc% ld \ n", c) সহ; __real_malloc (c); }

যদি আপনি এই ফাইলের সাথে অন্যান্য কোড লিঙ্ক করে --wrap malloc ব্যবহার করেন , তাহলে "malloc" এ সকল কলগুলি "__wrap_malloc" এর পরিবর্তে ফাংশনটি কল করবে। "__wrap_malloc" এ "__real_malloc" এ কলটি বাস্তব "malloc" ফাংশনটি কল করবে।

আপনি একটি "__real_malloc" ফাংশনও প্রদান করতে পারেন, যাতে --wrap বিকল্পটি ছাড়া লিঙ্কগুলি সফল হবে। যদি আপনি এটি করেন তবে "__ বাস্তব_মালক" এর সংজ্ঞাটিকে "__wrap_malloc" হিসাবে একই ফাইল হিসাবে উল্লেখ করা উচিত নয়; যদি আপনি করেন তবে লিঙ্কারটি "malloc" তে এটি মোড়ানো একটি সুযোগ আছে আগে সংযোজক কল আহ্বান করতে পারে।

--enable-নতুন-dtags

--disable-নতুন-dtags

এই লিঙ্কার ELF নতুন গতিশীল ট্যাগ তৈরি করতে পারেন। কিন্তু পুরোনো ELF সিস্টেম তাদের বুঝতে পারে না। আপনি যদি -enable-new-dtags- নির্দিষ্ট করেন, তাহলে প্রয়োজনীয় ডায়নামিক ট্যাগগুলি তৈরি করা হবে। আপনি যদি --disable-new-dtags নির্দিষ্ট করেন তবে নতুন ডায়নামিক ট্যাগগুলি তৈরি করা হবে না। ডিফল্টরূপে, নতুন ডায়নামিক ট্যাগগুলি তৈরি করা হয় না। লক্ষ্য করুন যে ঐ বিকল্পগুলি কেবলমাত্র এলইএফ সিস্টেমের জন্য উপলব্ধ।

I386 PE linker -shared বিকল্পটি সমর্থন করে, যা একটি স্বাভাবিক এক্সিকিউটেবলের পরিবর্তে আউটপুটটি একটি গতিশীল লিঙ্কযুক্ত লাইব্রেরি (DLL) হতে পারে। আপনি এই বিকল্পটি ব্যবহার করার সময় "*। Dll" আউটপুট নাম উচিত। উপরন্তু, লিঙ্কার সম্পূর্ণরূপে মান "* .def" ফাইলগুলি সমর্থন করে, যা লিঙ্কার কমান্ড লাইনের উপর বস্তুর ফাইলের মত নির্দিষ্ট করা যেতে পারে (প্রকৃতপক্ষে, এটি আর্কাইভের আগে থেকে চিহ্নগুলি রপ্তানি করা উচিত, যাতে তারা নিশ্চিত হয় যে তারা সংযুক্ত থাকে, একটি স্বাভাবিক বস্তুর ফাইল মত)

সমস্ত লক্ষ্যমাত্রার জন্য সাধারণ বিকল্পগুলি ছাড়াও, i386 PE লিঙ্ককারী অতিরিক্ত কমান্ড লাইন বিকল্পগুলি সমর্থন করে যা i386 PE লক্ষ্যের জন্য নির্দিষ্ট। মানগুলি গ্রহণ করে এমন বিকল্পগুলি একটি স্থান বা সমান চিহ্ন দ্বারা তাদের মান থেকে পৃথক হতে পারে।

--add-stdcall-ওরফে

যদি দেওয়া হয়, একটি stdcall প্রত্যয় (@ এনএন ) সঙ্গে প্রতীক হিসাবে এক্সপোর্ট করা হবে এবং ছদ্মপরিচয় লাঠি সঙ্গে এছাড়াও।

--base-file ফাইল

ফাইলটি এমন একটি ফাইলের নাম হিসাবে ব্যবহার করুন যা ডিলিটোলের সাথে DLL তৈরির জন্য প্রয়োজনীয় সকল পুনর্বিন্যাসের বেস অ্যাড্রেস সংরক্ষণ করতে পারে।

--dll

একটি নিয়মিত এক্সিকিউটেবলের পরিবর্তে একটি DLL তৈরি করুন। আপনি একটি প্রদত্ত ".def" ফাইলের মধ্যে "লাইব্রেরী" -কে ভাগ করেও উল্লেখ করতে পারেন।

--enable-stdcall-ফিক্সআপ

--disable-stdcall-ফিক্সআপ

যদি লিঙ্কটি একটি প্রতীক খুঁজে পায় যা এটি সমাধান করতে পারে না, তবে এটি অন্য একটি সংজ্ঞায়িত প্রতীক খুঁজছেন যা শুধুমাত্র প্রতীক নামের বিন্যাসে (cdecl vs stdcall) দ্বারা আলাদা এবং '' ফাজি লিঙ্কিং '' করার প্রচেষ্টা করবে এবং লিঙ্কটি দ্বারা লিঙ্কটি সমাধান করবে ম্যাচের জন্য উদাহরণস্বরূপ, অনির্ধারিত প্রতীক "_ফু" ফাংশন "_foo @ 1২", অথবা অনির্ধারিত প্রতীক "_bar @ 16" এর সাথে যুক্ত হতে পারে "_bar" ফাংশনটির সাথে সংযুক্ত করা যেতে পারে। যখন লিঙ্কার এইটি করেন, এটি একটি সতর্কতা প্রিন্ট করে, কারণ এটি সাধারণত লিঙ্ক করতে ব্যর্থ হওয়া উচিত, কিন্তু কখনও কখনও তৃতীয় পক্ষের ডিফল্ট থেকে তৈরি লাইব্রেরিগুলি আমদানি করতে এই বৈশিষ্ট্যটি ব্যবহারযোগ্য হতে পারে। যদি আপনি --enable-stdcall-fixup উল্লেখ করেন, এই বৈশিষ্ট্যটি সম্পূর্ণরূপে সক্ষম করা হয় এবং সাবধানবাণী মুদ্রিত হয় না। যদি আপনি --disable-stdcall-fixup উল্লেখ করেন, এই বৈশিষ্ট্যটি অক্ষম করা হয়েছে এবং এই ধরনের ত্রুটিগুলি ত্রুটি বলে মনে করা হয়।

--export-All-চিহ্ন

যদি দেওয়া হয়, DLL তৈরিতে ব্যবহৃত বস্তুর সমস্ত বৈশ্বিক চিহ্নগুলি DLL দ্বারা রপ্তানি করা হবে। উল্লেখ্য, এটি ডিফল্ট হলে অন্যথায় কোন রপ্তানি চিহ্ন থাকবে না। যখন প্রতীকগুলি ডিএইএফ ফাইলগুলির মাধ্যমে স্পষ্টভাবে এক্সপোর্ট করা হয় অথবা ফাংশন বৈশিষ্ট্যগুলির মাধ্যমে নিখুঁতভাবে রপ্তানি করা হয়, তবে এই বিকল্পটি দেওয়া না হওয়া পর্যন্ত ডিফল্টটি অন্য কিছুই রপ্তানি করা যাবে না। উল্লেখ্য, "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTS স্টার্ট আপ @ 12" এবং "অশুল্কপিটিপি" স্বয়ংক্রিয়ভাবে রপ্তানি করা হবে না। এছাড়াও, অন্যান্য DLLs থেকে আমদানি করা প্রতীকগুলি পুনরায় রপ্তানি করা হবে না, অথবা "_ শিরোনাম" বা "_ইনাম" এর সাথে শেষ হওয়া ডেলের অভ্যন্তরীণ লেআউটগুলি নির্দিষ্ট করা প্রতীকও নয়। উপরন্তু, "libgcc", "libstd ++", "libmingw32", বা "crtX.o" থেকে কোন চিহ্ন রপ্তানি করা হবে না। C ++ DLLs এর সাথে সাহায্য করার জন্য যাদের নাম "__rtti_" বা "__builtin_" দিয়ে শুরু হয় তাদের চিহ্নগুলি রপ্তানি করা হবে না। অবশেষে, সাইগভিন-প্রাইভেট প্রতীকগুলির একটি বিস্তৃত তালিকা রয়েছে যা রপ্তানি করা হয় না (স্পষ্টতই, এটি যখন সিগুইন লক্ষ্যগুলির জন্য DLL তৈরি করে তখন এটি প্রযোজ্য)।

এই সাইগভিন-এর অন্তর্ভুক্ত হয়: "_সিগুইন_ডল_েন্ট্রন @ 1২", "_সিগিন_crt0_common @ 8", "_ cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3" ", এবং" পরিবেশ "।

- ব্যতিক্রম-চিহ্ন প্রতীক , প্রতীক , ...

প্রতীকগুলির একটি তালিকা উল্লেখ করে যা স্বয়ংক্রিয়ভাবে রপ্তানি করা উচিত নয়। প্রতীক নামগুলি কমা বা কোলন দ্বারা বিভক্ত করা যেতে পারে।

--exclude-libs lib , lib , ...

আর্কাইভ লাইব্রেরির একটি তালিকা উল্লেখ করে যা থেকে প্রতীকগুলি স্বয়ংক্রিয়ভাবে রপ্তানি করা উচিত নয়। লাইব্রেরির নামগুলি কমা বা কলোনস দ্বারা বিভক্ত করা যেতে পারে। "--exclude-libs All" উল্লেখ করে স্বয়ংক্রিয় সংরক্ষণ থেকে সমস্ত আর্কাইভ লাইব্রেরির চিহ্ন অন্তর্ভুক্ত করা হয়। এই বিকল্পটি নির্বিশেষে, নির্বিশেষে একটি .def ফাইলে তালিকাবদ্ধ চিহ্নগুলি এখনও রপ্তানি করা হয়।

--file-প্রান্তিককরণ

ফাইলের সারিবদ্ধতা নির্দিষ্ট করুন। ফাইলের বিভাগগুলি সর্বদা ফাইল অফসেটগুলিতে শুরু হবে যা এই সংখ্যাটির গুণক। এই ডিফল্ট 512

- হ্যাপ রিজার্ভ

- হেজ রিজার্ভ , কমিট

রিসার্চ মেমরি পরিমাণ উল্লেখ করুন (এবং ঐচ্ছিক কমিট) এই প্রোগ্রামের জন্য গাদা হিসাবে ব্যবহার করা হবে। ডিফল্ট 1 এমবি সংরক্ষিত, 4 ক প্রতিশ্রুতিবদ্ধ

--image- বেস মান

আপনার প্রোগ্রাম বা dll বেস ঠিকানা হিসাবে মান ব্যবহার করুন। এই সর্বনিম্ন মেমরি অবস্থান যা আপনার প্রোগ্রাম বা dll লোড করা হয় যখন ব্যবহার করা হবে। আপনার ডিএলএসগুলির কার্য সম্পাদন এবং উন্নতির প্রয়োজন কমানোর জন্য প্রত্যেকেরই একটি অনন্য বেস অ্যাড্রেস থাকা উচিত এবং অন্য কোন ডিএলএসকে ওভারল্যাপ করতে হবে না। ডিফল্ট 0x400000 এক্সিকিউটেবলের জন্য, এবং 0x10000000 dlls এর জন্য।

--kill-এ

দেওয়া হলে, এক্সপোর্ট করার পূর্বে stdcall suffixes (@ nn ) চিহ্নগুলি থেকে ছিনতাই করা হবে।

- প্রধান-চিত্র-সংস্করণ মান

`` ইমেজ সংস্করণ '' এর প্রধান নম্বরটি সেট করে। ডিফল্টগুলি 1

- প্রধান-ওএস-সংস্করণ মান

`` ওস সংস্করণ '' এর প্রধান নম্বরটি সেট করে। ডিফল্টগুলি 4

- প্রধান-সাবসিস্টেম-সংস্করণ মান

`সাবসিস্টেম সংস্করণ 'এর প্রধান নম্বরটি সেট করে। ডিফল্টগুলি 4

--minor-image-version মান

`` ইমেজ সংস্করণ '' এর সংখ্যক সংখ্যা নির্ধারণ করে ডিফল্টগুলি 0 তে

--minor-os- সংস্করণ মান

`` Os সংস্করণ '' এর সংখ্যক সংখ্যা নির্ধারণ করে। ডিফল্টগুলি 0 তে

--minor-subsystem- সংস্করণ মান

`` সাবসিস্টেম সংস্করণ '' এর সংখ্যক সংখ্যা নির্ধারণ করে ডিফল্টগুলি 0 তে

- আউটপুট-ডিফ ফাইল

লিঙ্কার ফাইল ফাইলটি তৈরি করবে যা ডিএনএল ফাইলের সাথে একটি ডিএইএফ ফাইল ধারণ করবে যা লিঙ্কার তৈরি করছে। এই ডিএএফ ফাইলটি ("+ .def" নামে ডাকা উচিত) "dlltool" এর সাথে একটি আমদানি লাইব্রেরি তৈরি করতে ব্যবহার করা যেতে পারে অথবা স্বয়ংক্রিয়ভাবে বা পরোক্ষভাবে রপ্তানি করা প্রতীকগুলির একটি রেফারেন্স হিসেবে ব্যবহার করা যেতে পারে।

- আউট-প্রোটিব ফাইল

লিঙ্কার ফাইল ফাইলটি তৈরি করবে যা লিঙ্কারটি তৈরি করে DLL এর সাথে সংশ্লিষ্ট একটি আমদানি লিবাল থাকবে। এই ইম্পোর্ট লিব (যার নাম "* .dll.a" বা "* .a") ক্লায়েন্টকে জেনারেটেড DLL- এর সাথে যুক্ত করতে ব্যবহার করা যেতে পারে; এই আচরণটি একটি পৃথক "dlltool" আমদানি লাইব্রেরির নির্মাণ পদক্ষেপটি এড়িয়ে যেতে সক্ষম করে।

--enable-স্বয়ংক্রিয় ইমেজ-বেস

স্বয়ংক্রিয়ভাবে DLL এর জন্য ইমেজ বেস নির্বাচন করুন, যদি না "--image-base" যুক্তি ব্যবহার করে নির্দিষ্ট করা হয় ডিএলএএনএন থেকে উত্পন্ন একটি হ্যাশ ব্যবহার করে প্রতিটি DLL, ইন-মেমরির সংঘর্ষ এবং পুনর্বিবেচনের জন্য অনন্য ইমেজ সেটগুলি তৈরি করে যা প্রোগ্রামের কার্যকারিতা বিলম্বিত করতে পারে।

--disable-স্বয়ংক্রিয় ইমেজ-বেস

স্বয়ংক্রিয়ভাবে একটি অনন্য ইমেজ বেস উত্পন্ন করবেন না। যদি কোন ব্যবহারকারী-নির্দিষ্ট ইমেজ বেস ("-image-base") না থাকে তবে প্ল্যাটফর্ম ডিফল্ট ব্যবহার করুন।

- dll- অনুসন্ধান-উপসর্গ স্ট্রিং

একটি ডিফল্টভাবে একটি আমদানি লাইব্রেরি ছাড়া লিঙ্কিং যখন, "lib । Dll" এর পছন্দতে " .dll" অনুসন্ধান করুন। এই আচরণটি বিভিন্ন `` উপ-প্ল্যাটফর্ম '' এর জন্য তৈরি DLL এর মধ্যে সহজ পার্থক্যটি পরিচালনা করে: উদাহরণস্বরূপ, সাইগিন DLL সাধারণত "- dll-search-prefix = cyg" ব্যবহার করে।

--enable-স্বয়ংক্রিয় আমদানি

DLLs থেকে DATA আমদানির জন্য "_symbol" এর "__imp__symbol" এর অত্যাধুনিক লিঙ্কিং এবং সেই DATAexports- এর সাথে আমদানি লাইব্রেরির নির্মাণের সময় প্রয়োজনীয় থঙ্কিং প্রতীকগুলি তৈরি করুন। এটি সাধারণত 'শুধু কাজ করবে' --- কিন্তু কখনও কখনও আপনি এই বার্তা দেখতে পারেন:

"পরিবর্তনশীল '' স্বয়ংক্রিয়ভাবে আমদানি করা যাবে না। বিবরণের জন্য ld এর" --enable-auto-import "ডকুমেন্টেশনটি পড়ুন।"

এই বার্তাটি ঘটে যখন কিছু (সাব) অভিব্যক্তি শেষ পর্যন্ত দুটি ধ্রুবক (Win32 আমদানি সারণি শুধুমাত্র এক অনুমতি দেয়) যোগফল দ্বারা দেওয়া একটি ঠিকানা অ্যাক্সেস। এমন ঘটনাগুলি ঘটতে পারে এমন ঘটনাগুলি ডিএলএল থেকে আমদানি করা স্ট্রাকচার ভেরিয়েবলের সদস্য ক্ষেত্রগুলির অ্যাক্সেসের সাথে সাথে একটি DLL থেকে আমদানি করা একটি অ্যারের বৈকল্পিকভাবে একটি ধ্রুব সূচক ব্যবহার করে। কোনও মাল্টিডাউন ভেরিয়েবল (অ্যারে, স্ট্রাক্ট, দীর্ঘ লম্বা ইত্যাদি) এই সমস্যাটি ট্রিগার করতে পারে। যাইহোক, অবরুদ্ধ এক্সপোর্টিত ভেরিয়েবলের সঠিক তথ্য প্রকারের, ld সবসময় এটি সনাক্ত করবে, সতর্কতা অবলম্বন করবে এবং প্রস্থান করবে

এক্সপোর্ট করা ভেরিয়েবলের ডাটা প্রকারের নির্বিশেষে এই অসুবিধা মোকাবেলার বিভিন্ন উপায় আছে:

এক উপায় - ব্যবহারযোগ্য-রানটাইম-ছদ্মবেশী- reloc সুইচ। এটি রানটাইম পরিবেশের জন্য আপনার ক্লায়েন্ট কোডের রেফারেন্সগুলি সামঞ্জস্য করার কাজটি ছেড়ে দেয়, সুতরাং এই পদ্ধতিটি তখনই কাজ করে যখন রানটাইম এনভরনমেন্ট এই বৈশিষ্ট্যটি সমর্থন করে।

একটি দ্বিতীয় সমাধান হল একটি 'constants' এক পরিবর্তনশীল হতে বাধ্য করা --- যে, কম্পাইল সময় অজানা এবং অপ-অপ্টিমাইজেশান। অ্যারে জন্য, দুটি সম্ভাবনা আছে: একটি) সূচী (অ্যারের ঠিকানা) একটি পরিবর্তনশীল, বা খ) 'ধ্রুবক' সূচক একটি পরিবর্তনশীল করতে। এভাবে:

বহির্মুখী প্রকারের extern_array []; extern_array [1] -> {ঝাঁকি টাইপ * t = extern_array; টি [1]}

অথবা

বহির্মুখী প্রকারের extern_array []; extern_array [1] -> {volatile int t = 1; extern_array [t]}

Structs জন্য (এবং অধিকাংশ অন্যান্য মাল্টিডাউনড ডাটা ধরনের) একমাত্র বিকল্প struct নিজেই (বা দীর্ঘ দীর্ঘ, বা ...) পরিবর্তনশীল করতে হয়:

বহির্মুখী স্ট্রাক্টের extern_struct; extern_struct.field -> {অস্থায়ী স্ট্রাক্ট s * t = & extern_struct; টি-> ক্ষেত্র}

অথবা

বহিঃস্থ দীর্ঘ দীর্ঘ extern_ll; extern_ll -> {দীর্ঘস্থায়ী দীর্ঘস্থায়ী * local_ll = & extern_ll; * local_ll}

এই অসুবিধা মোকাবেলা করার একটি তৃতীয় পদ্ধতি আপত্তিজনক চিহ্নের জন্য 'অটো-আমদানি' পরিত্যাগ করা এবং "__declspec (dllimport)" এর সাথে চিহ্নিত করা। যাইহোক, অনুশীলনের জন্য কম্পাইল-টাইম # ডিফাইন ব্যবহার করার প্রয়োজন হয় তা বোঝানোর জন্য যে আপনি DLL নির্মাণ করছেন কিনা, ক্লায়েন্ট কোড তৈরি করছে যা DLL এর সাথে সংযুক্ত হবে, অথবা কেবল একটি স্ট্যাটিক লাইব্রেরিতে বিল্ডিং / লিঙ্ক করা হবে। 'অবিচ্ছিন্ন অফসেট সহ সরাসরি ঠিকানা' সমস্যার সমাধান করার বিভিন্ন পদ্ধতিগুলির মধ্যে বেছে নেওয়ার ক্ষেত্রে, আপনি বাস্তবিক বিশ্বব্যাপী ব্যবহার বিবেচনা করতে পারেন:

মূল:

--foo.h এক্সটারইন এআর []; --foo.c # অন্তর্ভুক্ত "foo.h" অকার্যকর প্রধান (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

সমাধান 1:

--foo.h এক্সটারইন এআর []; --foo.c # অন্তর্ভুক্ত "foo.h" অকার্যকর প্রধান (int argc, char ** argv) {/ * এই সমাধানটি win32 এবং cygwin; "অপ্টিমাইজ" না * / অস্থায়ী int * parr = arr; printf, ( "% d টি \ N", বাচ্চা স্যামন মত্স্য [1]); }

সমাধান 2:

--foo.h / * নোটঃ অটো-এক্সপোর্টটি ধরে নেওয়া হয়েছে (__declspec (dllexport)) * / #if (সংজ্ঞায়িত (_WIN32) || সংজ্ঞায়িত (__ সিওয়াইজিওয়িন__)) &&!! (সংজ্ঞায়িত (FOO_BUILD_DLL) || সংজ্ঞায়িত (FOO_STATIC )) FOODIMPORT __declspec (dllimport) #define #ELSE # FOODIMPORT #define FOODIMPORT EX এআর []; --foo.c # অন্তর্ভুক্ত "foo.h" অকার্যকর প্রধান (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

এই সমস্যাটি এড়ানোর চতুর্থ উপায় হল আপনার লাইব্রেরীটি একটি অবজেক্টিভ ভেরিয়েবলের জন্য একটি ডাটা ইন্টারফেসের পরিবর্তে একটি কার্যকরী ইন্টারফেস ব্যবহার করতে চাই (যেমন set_foo () এবং get_foo () অ্যাক্সেসর ফাংশন)।

--disable-স্বয়ংক্রিয় আমদানি

DLLs থেকে DATAimports জন্য "__imp__symbol" থেকে "_symbol" থেকে sophisticted লিঙ্কিং করার চেষ্টা করবেন না।

--enable-রানটাইম-সিউডো-reloc

যদি আপনার কোডে -enable-auto-import অধ্যায় বর্ণিত এক্সপ্রেশন অন্তর্ভুক্ত হয়, অর্থাৎ, অ-শূন্য অফসেটের সাথে DLL থেকে DATAimports, এই সুইচটি 'রানটাইম ছদ্মো পুনর্বিবেচনার' একটি ভেক্টর তৈরি করবে যা রাইটটাইম পরিবেশ দ্বারা রেফারেন্সগুলি ব্যবহার করতে পারে আপনার ক্লায়েন্ট কোড এই ধরনের তথ্য।

--disable-রানটাইম-সিউডো-reloc

DLL থেকে নন-শূন্য অফসেট ডেটা আমদানিের জন্য ছদ্মস্থল স্থানান্তর তৈরি করবেন না এটি ডিফল্ট

--enable-অতিরিক্ত PE-ডিবাগ

স্বয়ংক্রিয়-ইম্পোর্ট প্রতীক থান্ডিংয়ের সাথে সম্পর্কিত অতিরিক্ত ডিবাগ তথ্য দেখান।

--section-প্রান্তিককরণ

অধ্যায় প্রান্তিককরণ নির্ধারণ করে। মেমরির সেকশন সর্বদা এই সংখ্যাগুলির একাধিক পাতার মধ্যেই শুরু হবে। ডিফল্টগুলি 0x1000

- স্ট্যাক রিজার্ভ

- স্ট্যাক রিজার্ভ , কমিট

এই প্রোগ্রামের জন্য স্ট্যাক হিসাবে ব্যবহার করা রিজার্ভ (এবং ঐচ্ছিকভাবে commit) মেমরির পরিমাণ উল্লেখ করুন। ডিফল্ট 2 এমবি সংরক্ষিত, 4 ক প্রতিশ্রুতিবদ্ধ।

--সবস সিস্টেম

--সবস সিস্টেম যা : প্রধান

--সবস সিস্টেম যা : প্রধান গৌণ

আপনার প্রোগ্রাম চালানো হবে যার অধীন সাবসিস্ট্রি সুনির্দিষ্ট করে। আইনি মান যার জন্য "নেটিভ", "উইন্ডোজ", "কনসোল", এবং "প্যাসিক্স"। আপনি বিকল্পভাবে সাবস্ক্রিপ্ট সংস্করণও সেট করতে পারেন।

গুরুত্বপূর্ণ: আপনার কমান্ডটি নির্দিষ্ট কম্পিউটারে কিভাবে ব্যবহার করা হয় তা দেখতে ম্যান কমান্ড ( % man ) ব্যবহার করুন।