.A এবং .so ফাইলগুলি কী কী?


427

আমি বর্তমানে একটি সি অ্যাপ্লিকেশন পোর্ট করার চেষ্টা করছি এআইএক্সে করছি এবং বিভ্রান্ত হয়ে পড়ছি। .A এবং .so ফাইলগুলি কী এবং অ্যাপ্লিকেশন তৈরি / চালানোর সময় সেগুলি কীভাবে ব্যবহার করা হয়?


116
একটি লাইব্রেরি archive এবং অন্যটি shared object
শিপলু মোকাদ্দিম

উত্তর:


483

সংরক্ষণাগার গ্রন্থাগারগুলি (.a) স্থিতিযুক্তভাবে সংযুক্ত থাকে যখন আপনি যখন সিসি সি-তে আপনার প্রোগ্রামটি সংকলন করেন তখন ile সুতরাং, লাইব্রেরিতে যদি কোনও পরিবর্তন হয়, আপনাকে আপনার কোডটি আবার সংকলন এবং তৈরি করতে হবে।

.A লাইব্রেরির উপর .so (ভাগ করা অবজেক্ট) এর সুবিধাটি হ'ল এগুলি রানটাইমের সময় অর্থাৎ জি সি সি তে আপনার .o ফাইল -o অপশন তৈরির পরে লিঙ্কযুক্ত। সুতরাং, .so ফাইলে যদি কোনও পরিবর্তন হয়, আপনার আপনার মূল প্রোগ্রামটি পুনরায় সংকলনের দরকার নেই। তবে নিশ্চিত হয়ে নিন যে আপনার মূল প্রোগ্রামটি ln কমান্ডের সাথে নতুন .so ফাইলের সাথে সংযুক্ত রয়েছে।

এটি আপনাকে .so ফাইলগুলি তৈরি করতে সহায়তা করবে। http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

আশাকরি এটা সাহায্য করবে.


2
এর মধ্যে কোনটি pic(অবস্থান স্বাধীন কোড) সম্পর্কিত?
ট্রান্সএ্যাং করুন

213

.এ স্ট্যাটিক লাইব্রেরি হয়। আপনি যদি সেগুলির মধ্যে সঞ্চিত কোড ব্যবহার করেন তবে এটি সেগুলি থেকে নেওয়া হয়েছে এবং আপনার নিজের বাইনারিতে এমবেড করা আছে। ভিজ্যুয়াল স্টুডিওতে এগুলি .lib ফাইল হবে।

.so গতিশীল লাইব্রেরি হয়। আপনি যদি সেগুলির মধ্যে সঞ্চিত কোড ব্যবহার করেন তবে এটি নেওয়া হয় না এবং আপনার নিজের বাইনারিতে এম্বেড থাকে। পরিবর্তে এটি কেবল রেফারেন্সড, সুতরাং বাইনারি তাদের উপর নির্ভর করবে এবং তাই ফাইলের কোডটি রানটাইম এ যুক্ত / লোড করা হবে। ভিজ্যুয়াল স্টুডিও / উইন্ডোজ এ এগুলি .dll ফাইল (লিঙ্ক সম্পর্কিত তথ্যযুক্ত ছোট .lib ফাইল সহ) থাকবে।


হাই, সি / সি ++ কোডে .so ফাইলটি ডিসম্পাইল করার কোনও বিকল্প নেই?
জিশান্ট

@Ancee: এই প্রশ্ন তাকান: stackoverflow.com/questions/205059/is-there-ac-decompiler
পল Wintz

এর জন্য একটি ছোট .libফাইলকে .dllআমদানি গ্রন্থাগার বলা হয়।
মানি ওরিয়েন্টেড প্রোগ্রামার

13

.a ফাইলগুলি সাধারণত লাইব্রেরি হয় যা স্থিরভাবে সংযুক্ত হয় (বা আরও সঠিকভাবে সংরক্ষণাগারগুলি), এবং
.so গতিশীল লিঙ্কযুক্ত লাইব্রেরি হয়।

একটি বন্দর করতে আপনার উত্স কোড যা আপনার তৈরি করতে সংকলিত হয়েছিল, বা আপনার এআইএক্স মেশিনে সমতুল্য ফাইলের প্রয়োজন হবে।


.So ফাইলগুলি ব্যবহার করতে আমি কীভাবে আমার অ্যাপ্লিকেশনটি তৈরি করব?
ডান্ক

উভয় ধরণের গ্রন্থাগার তৈরি এবং ওয়েবে তাদের লিঙ্ক করার জন্য অনেকগুলি দুর্দান্ত রেফারেন্স রয়েছে। গুগল আপনার বন্ধু।
ডেভিড পয়েন্টার

@ ডানক - কয়েকটি উপায় রয়েছে। তোমার কি মেকফাইল আছে? সাধারণত যে প্রোগ্রামটি পুরো প্রোগ্রামটি একত্রিত করে (এবং তাই লিঙ্কারকে কল করে) -L / dir / dir1 /.../ দিয়ে লাইব্রেরি ফাইলগুলি সন্ধানের জন্য স্থানগুলি নির্দিষ্ট করবে এবং -lname সহ লাইব্রেরিগুলির নামও স্পষ্টভাবে রাখতে পারে। আপনি দেখতে পাবেন যে আসল নামটি libname.a বা libname.so। লিঙ্কারটি তখন বুঝতে পারে যে এটি যদি যথাযথভাবে সাধারণ প্রোগ্রাম হয় তবে কী করবেন। তবে আপনার কাছে এখনও .so ফাইলটি তৈরি বা অনুসন্ধান করার সমস্যা রয়েছে। এটি তৈরির জন্য আপনার কাছে সোর্স কোড বা একটি এআইএক্স লাইব্রেরি আছে?
গবলার

10

এগুলি সংযোগের পর্যায়ে ব্যবহৃত হয়। .aফাইলগুলি স্থিতিশীলভাবে সংযুক্ত থাকে এবং .soফাইলগুলি সংযুক্ত-এর সাথে সংযুক্ত থাকে, যাতে আপনি যখনই এক্সপি চালাবেন তখন গ্রন্থাগারের প্রয়োজন হয়।

যে কোনও লিবিব ডিরেক্টরি দেখতে গিয়ে সেগুলি কোথায় সংরক্ষণ করা হয়েছে তা খুঁজে পেতে পারেন ... /usr/libএবং এর /libবেশিরভাগ রয়েছে এবং LIBRARY_PATHপরিবেশের পরিবর্তনশীলও রয়েছে।


0

উইকিপিডিয়া এই তথ্যের জন্য একটি শালীন উত্স।

স্ট্যাটিক লাইব্রেরি ফাইলগুলি শিখতে যেমন .a স্ট্যাটিক লাইবারারি পড়ুন

ভাগ করে নেওয়া লাইব্রেরি ফাইলগুলি সম্পর্কে জানার জন্য লাইব্রেরি_ (কম্পিউটিং) পড়ুন #Shared_libraries এই পৃষ্ঠায়, ফাইল নামকরণ বিভাগেও দরকারী তথ্য রয়েছে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.