একটি তৃতীয় .o ফাইলের মধ্যে দুটি জিসিসি সংকলিত .o অবজেক্ট ফাইল সংযুক্ত করুন


84

কীভাবে একজন দুটি জিসিসি সংযুক্ত করে .o অবজেক্ট ফাইলকে তৃতীয় .o ফাইলের সাথে সংযুক্ত করে?

আপনার যদি উত্স ফাইলে অ্যাক্সেস থাকে তবে -combineজিসিসি পতাকা সংকলনের আগে উত্স ফাইলগুলিকে মার্জ করবে:

তবে এটি কেবল উত্স ফাইলগুলির জন্যই কাজ করে এবং জিসিসি .oএই আদেশের জন্য ফাইলগুলি ইনপুট হিসাবে গ্রহণ করে না ।

সাধারণত, লিঙ্ক করা .oফাইলগুলি সঠিকভাবে কাজ করে না, কারণ আপনি লিঙ্কারের আউটপুটটিকে এর জন্য ইনপুট হিসাবে ব্যবহার করতে পারবেন না। ফলাফলটি একটি ভাগ করা লাইব্রেরি এবং ফলাফল কার্যকর করার সাথে স্থিতিশীলভাবে লিঙ্ক করা হয় না।


4
জিসিসির বর্তমানে কোনও -combineবিকল্প নেই। এটি জিসিসি ৪.১.২ এ বিদ্যমান এবং জিসিসি .3.৩.০-তে বিদ্যমান নেই (অন্য কেউ যখন এটি সরিয়ে ফেলা হয়েছে ঠিক তখনই তা বুঝতে পারে)।
কিথ থমসন

উত্তর:


98

পাসিং -relocatableবা -rটু ldইনপুট হিসাবে উপযুক্ত এমন একটি সামগ্রী তৈরি করবে ld

উত্পন্ন ফাইলটি মূল .oফাইলগুলির মতো একই ধরণের ।


4
বিপরীতমুখী অপারেশন করা কি সম্ভব? অর্থাৎ কো থেকে আও এবং বো উত্পাদন?
বার্ট রেগেলিংক

7
@ বার্টরিজিলিংক নং, কারণ কোনও অনন্য বিপরীতমুখী নেই, গণিতের শর্তে ফর্মা গ্রুপ করে না: পি
আলেক টিল

7
সতর্কতা: --relocatableকম পোর্টেবল বলে মনে হচ্ছে। অ্যান্ড্রয়েড এনডিকে নিয়ে আসা এলডি কেবল স্বীকৃতি দেয় -relocatable। আপনার যদি বহনযোগ্যতা দরকার হয় তবে লেগে থাকুন -r
মার্টিন বোনার মনিকা

4
@ মঠিজস শব্দটি একই; পার্থক্যটি একটি বিয়োগ বা দুটি।
মার্টিন বোনার

4
আহ, দেখেনি। সুতরাং, অ্যান্ড্রয়েড এনডিকে কেবল স্বীকৃতি দেয় -relocatable এবং -r তবে তা নয় --relocatable। স্পষ্ট করার জন্য ধন্যবাদ!
ম্যাথিজস কুইজমান

10

আপনি যদি দুটি বা আরও বেশি .o ফাইলের একটি সংরক্ষণাগার তৈরি করতে চান তবে (যেমন একটি স্ট্যাটিক লাইব্রেরি) arকমান্ডটি ব্যবহার করুন :


@ লুসিয়ান তবে আপনি কেন এটি করতে চান? একটি স্ট্যাটিক লাইব্রেরি .o ফাইলের তুলনায় লিঙ্ক করা অনেক বেশি সুবিধাজনক।

4
আমাকে objcopyফলাফলের ফাইলটি চালাতে হবে এবং কিছু ধরণের প্রতীকগুলি ফাইলটিতে স্থানীয় করে তুলতে হবে যাতে তারা বাহ্যিকভাবে দৃশ্যমান না হয়। কিছু প্রতীক যা স্থানীয়করণ করা দরকার সেগুলি ফাইল a.oএবং b.oফাইলগুলির মধ্যে রেফারেন্স করা হয় । আমি স্বতন্ত্র ফাইলগুলি স্থানীয়করণ করতে পারি না - কারণ সংযোগকারীগুলিতে চিহ্নগুলি পাওয়া যায়নি - এবং আমি স্থিতিশীল সংরক্ষণাগার থেকে চিহ্নগুলিকে স্থানীয়করণ করতে পারি না।
লুসিয়ান অ্যাড্রিয়ান গ্রিজিনকু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.