Gcc কমান্ড লাইন ব্যবহার করে .c ফাইল থেকে .so ফাইল তৈরি করুন


162

আমি লিনাক্স ডায়নামিক লাইব্রেরি (.so ফাইল) এর জন্য একটি হ্যালো ওয়ার্ল্ড প্রজেক্ট তৈরি করার চেষ্টা করছি। সুতরাং আমার কাছে একটি ফাইল হ্যালো।

#include <stdio.h>
void hello()
{
    printf("Hello world!\n");
}

hello()কমান্ড লাইন থেকে জিসিসি ব্যবহার করে রফতানি করে এমন একটি ফাইল আমি কীভাবে তৈরি করব ?

উত্তর:


291

একটি ভাগ করা লাইব্রেরি তৈরি করতে আপনাকে প্রথমে আপনার সি কোডটি -fPIC(অবস্থানের স্বাধীন কোড) পতাকাটি দিয়ে সংকলন করতে হবে ।

gcc -c -fPIC hello.c -o hello.o

এটি একটি অবজেক্ট ফাইল (.o) উত্পন্ন করবে, এখন আপনি এটি নিন এবং .so ফাইলটি তৈরি করুন:

gcc hello.o -shared -o libhello.so

সম্পাদনা : মন্তব্য থেকে পরামর্শ:

তুমি ব্যবহার করতে পার

gcc -shared -o libhello.so -fPIC hello.c

এক পদক্ষেপে এটি করতে। - জোনাথন লেফলার

আমি আপনার আদেশগুলিতে -Wallসমস্ত সতর্কতা -gপেতে এবং ডিবাগিংয়ের তথ্য পেতে যুক্ত করার পরামর্শ দিই gcc। - বেসিল স্টারিনকিভিচ


1
আপনাকে প্রথমে gcc -c -fPIC blabla.c -o blabla.o করতে হবে, তারপরে উপরের কমান্ডটি করতে হবে।
ড্রিমক্র্যাশ

57
বা gcc -shared -o libhello.so -fPIC hello.cএক পদক্ষেপে এটি করা।
জোনাথন লেফলার

5
আমি আপনার আদেশগুলিতে -Wallসমস্ত সতর্কতা -gপেতে এবং ডিবাগিংয়ের তথ্য পেতে যুক্ত করার পরামর্শ দিই gcc
বেসাইল স্টারিনকিভিচ

প্রস্তাবনার জন্য ধন্যবাদ, আমি তাদের উত্তর যোগ করা
dreamcrash

3
@ সাশোম .oফাইলটি মূলত উত্স ফাইলের জন্য একটি বস্তু ফাইল, এগুলি একসাথে যুক্ত করার আগে, চূড়ান্ত সম্পাদনযোগ্য into সুতরাং আপনি চালানোর সময় gcc -o abc.c abc.oএকটি অবজেক্ট ফাইল উত্পন্ন হবে। উত্তর তারপর আপনি abc.oফাইল তৈরি করতে এই ফাইলটি ব্যবহার করতে পারেন .so। অনেকগুলি ফাইল তৈরির জন্য, আপনার কেবলমাত্র একটি .cফাইলে লিখিত সঠিক সি কোড দরকার । পিএস: মন্তব্যে আপনার সন্দেহ পরিষ্কার করার জন্য।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.