2011-03-27 12 views
7

मैं क्या सीखा है से मैं एक साझा पुस्तकालय बनाने के लिए तैयार करने के लिए इस चरण का पालन करने की जरूरत है:सी: मुख्य() साझा किए बिना कुछ ऑब्जेक्ट्स (साझा लाइब्रेरी के लिए) संकलित करें?

gcc -fPIC libfoo.c -o libfoo.o 

और फिर मैं लिंक करें। मैंने इन चरणों में सहायता करने के लिए मेकफ़ाइल बनाने का प्रयास किया था, लेकिन अब त्रुटियां हो रही हैं।

यह तब होता है जब मैं कर फ़ाइल को चलाने:

[email protected]:~/Projects/so$ gcc -fPIC ./libfoo.c -o libfoo.o 
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start': 
(.text+0x18): undefined reference to `main' 
collect2: ld returned 1 exit status 

मैं कैसे मुख्य कार्य बिना पुस्तकालय फ़ाइल संकलन कर सकते हैं, क्योंकि यह एक कार्यक्रम नहीं है और एक पुस्तकालय में किया जाता है?

यदि यह मदद करता है मेरा कार्यक्रम मूल रूप से है यह (व्याख्या)

(stdio and openssl headers here) 

(debugging macro definitions here) 

(two functions, gettime() and opensslrandom() defined here) 

मैं, मैक्रोज़ के बारे में समझने में समस्या हो और साथ ही लगता है के रूप में वे अंत में साझा लाइब्रेरी में होगा वे में बेकार हैं साझा पुस्तकालय? मैंने उन्हें libfoo.h में शामिल करने के लिए शामिल किया, हालांकि मुझे अभी तक यह देखना है कि मैक्रोज़ काम करते हैं या नहीं।

उत्तर

20

आप वस्तु फ़ाइलों पैदा करने के लिए -c

gcc -fPIC -c libfoo.c 

की जरूरत है।

आप को देखने के लिए चाहते हो सकता है: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

+0

शानदार, मैं जानता था कि वहाँ कुछ आसान था! –

संबंधित मुद्दे