একটি মেকফিল দিয়ে এক্সিকিউটেবল এবং শেয়ার্ড লাইব্রেরি তৈরি করুন


4

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

exe.a: main.c func.c
    gcc main.c func.c -o exe.a
lib.so: func.c
    gcc func.c -o lib.so -fPIC -shared

যখন মেকফাইলটি কার্যকর হয় কেবল এক্সিকিউটেবলই সংকলিত হবে। একটি মেকফাইল দিয়ে দুটি অবজেক্ট তৈরি করা কি সম্ভব? এই ফাইলগুলি তৈরি করার জন্য সর্বোত্তম পদ্ধতির কী?

উত্তর:


5

ডিফল্টরূপে কোনও মেকফাইলে makeকেবল প্রথম লক্ষ্য তৈরি করবে যা exe.aআপনার ক্ষেত্রে। আপনি makeঅন্য একটি লক্ষ্য তৈরি করতে বলতে পারেন :

make lib.so

বা উভয় লক্ষ্য:

make lib.so exe.a

বা (পছন্দসই) একটি নতুন প্রথম লক্ষ্য প্রবর্তন করুন যার নাম সাধারণত all:

all: exe.a lib.so

exe.a: main.c func.c
    gcc main.c func.c -o exe.a
lib.so: func.c
    gcc func.c -o lib.so -fPIC -shared

এখন একটি সরল make(ছদ্ম-) লক্ষ্য তৈরি করবে allযা ঘুরেফিরে নির্ভর করে exe.aএবং lib.soতাই তারা প্রথমে তৈরি হয় built মনে রাখবেন যে allআপনার ডিরেক্টরিতে এই ক্ষেত্রে কোনও ফাইল কল্পনা করা উচিত নয় কারণ তখন makeবিভ্রান্ত হয়।


ধন্যবাদ. নতুন প্রথম টার্গেট সহ বিকল্পটি হ'ল আমি যা খুঁজছিলাম।
ওলুপো

অলুপো আপনাকে স্বাগতম আপনি যখন অন্য মেকফিলগুলি অধ্যয়ন করেন আপনি allখুব প্রায়ই এই লক্ষ্যটির মুখোমুখি হন ।
পার্লডাক

আমি অন্য কিছু মেকফাইল পড়েছি, তবে তাদের বেশিরভাগই আমার বর্তমান দক্ষতার স্তরের জন্য উন্নত ছিল।
ওলুপো

2
আমি ঠিক কী বলতে চাই তা আমি জানি :-) আমার দক্ষতা খুব ভাল হয় না এবং যখন আরও জটিল মেকফিলগুলি আসে তখন আমি সাধারণত তাদেরকে রকেট বিজ্ঞান হিসাবে ভাবি ।
পার্লডাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.