2013-02-14 9 views
106

का उपयोग कर .c फ़ाइल से .so फ़ाइल बनाएं। मैं लिनक्स गतिशील पुस्तकालयों (.so फ़ाइलों) के लिए एक हैलो वर्ल्ड प्रोजेक्ट बनाने की कोशिश कर रहा हूं।जीसीसी कमांड लाइन

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

मैं एक .so फ़ाइल कि hello() निर्यात करता है, कमांड लाइन से जीसीसी का उपयोग कर कैसे बनाऊँ: तो मैं एक फ़ाइल hello.c है?

उत्तर

190

साझा लाइब्रेरी उत्पन्न करने के लिए आपको पहले अपने कोड को -fPIC (स्थिति स्वतंत्र कोड) ध्वज के साथ संकलित करने की आवश्यकता है।

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

यह एक वस्तु फ़ाइल (ओ), अब आप इसे ले पैदा करते हैं और .so फ़ाइल बनाने जाएगा:

gcc hello.o -shared -o libhello.so 

संपादित: सुझाव टिप्पणियों से:

आप

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

एक चरण में ऐसा करने के लिए उपयोग कर सकते हैं। - Jonathan Leffler

मैं भी -Wall जोड़ने के लिए सभी चेतावनियों पाने के लिए -g डिबगिंग जानकारी, आपके gcc आदेशों को पाने के लिए सुझाव देते हैं, और। - Basile Starynkevitch

+1

आपको पहले gcc -c -fPIC blabla.c -o blabla.o करना होगा, फिर उपरोक्त आदेश। – dreamcrash

+33

या 'gcc -shared -o libhello.so -fPIC hello.c' इसे एक चरण में करने के लिए। –

+4

मैं आपके 'gcc' आदेशों पर, सभी चेतावनियां प्राप्त करने के लिए' -Wall' जोड़ने और '-g' को डिबगिंग जानकारी प्राप्त करने का भी सुझाव देता हूं। –