मेरे पास एक प्रश्न है: जीसीसी के साथ लिनक्स में एक स्थिर लाइब्रेरी को कैसे संकलित करें, यानी मुझे अपने स्रोत कोड को out.a. नामक फ़ाइल में संकलित करने की आवश्यकता है। क्या यह gcc -o out.a out.c
कमांड के साथ संकलित करने के लिए पर्याप्त है? मैं जीसीसी से काफी परिचित नहीं हूं, आशा करता हूं कि कोई मुझे हाथ दे सके।लिनक्स में एक स्थिर पुस्तकालय कैसे संकलित करें?
99
A
उत्तर
154
देखें Creating a shared and static library with the gnu compiler [gcc]
gcc -c -o out.o out.c
-c
बल्कि एक निष्पादन की तुलना में एक मध्यस्थ वस्तु फ़ाइल बनाने के लिए, का मतलब है।
ar rcs libout.a out.o
यह स्थैतिक पुस्तकालय बनाता है। r
प्रतिस्थापन के साथ सम्मिलित करने का मतलब है, c
का अर्थ है एक नया संग्रह बनाना, और s
का अर्थ है एक अनुक्रमणिका लिखना। हमेशा के रूप में, अधिक जानकारी के लिए man page देखें।
9
ऑब्जेक्ट फ़ाइलों को जीसीसी के साथ जेनरेट करें, फिर ar
का उपयोग उन्हें स्थिर लाइब्रेरी में बंडल करने के लिए करें।
50
यहाँ एक पूर्ण makefile उदाहरण:
makefile
TARGET = prog
$(TARGET): main.o lib.a
gcc $^ -o [email protected]
main.o: main.c
gcc -c $< -o [email protected]
lib.a: lib1.o lib2.o
ar rcs [email protected] $^
lib1.o: lib1.c lib1.h
gcc -c -o [email protected] $<
lib2.o: lib2.c lib2.h
gcc -c -o [email protected] $<
clean:
rm -f *.o *.a $(TARGET)
makefile समझा:
target: prerequisites
- नियम सिर[email protected]
- इसका मतलब है लक्ष्य ,210
$^
- सभी आवश्यक शर्तें$<
का मतलब है - सिर्फ पहली शर्तar
का मतलब है - एक लिनक्स उपकरण बनाएं, बदलें, और अभिलेखागार see the man pages for further information से निकालने के लिए। इस मामले में विकल्प मतलब है:r
- नहीं तो पहले से हीs
विद्यमान एक संग्रह बनाने - - संग्रह
में एक वस्तु फ़ाइल सूचकांक बनाने संग्रह
c
अंदर मौजूदा फ़ाइलों को प्रतिस्थापित
निष्कर्ष निकालने के लिए: लिनक्स के तहत स्थिर लाइब्रेरी ऑब्जेक्ट फ़ाइलों के संग्रह से अधिक कुछ नहीं है।
main.clib
#include <stdio.h>
#include "lib.h"
int main (void)
{
fun1(10);
fun2(10);
return 0;
}
का उपयोग कर lib.h libs मुख्य हैडर
#ifndef LIB_H_INCLUDED
#define LIB_H_INCLUDED
#include "lib1.h"
#include "lib2.h"
#endif
lib1।गपहले lib स्रोत
#include "lib1.h"
#include <stdio.h>
void fun1 (int x)
{
printf("%i\n",x);
}
lib1.hइसी हैडर
#ifndef LIB1_H_INCLUDED
#define LIB1_H_INCLUDED
#ifdef __cplusplus
extern “C” {
#endif
void fun1 (int x);
#ifdef __cplusplus
}
#endif
#endif /* LIB1_H_INCLUDED */
lib2.cदूसरा lib स्रोत
#include "lib2.h"
#include <stdio.h>
void fun2 (int x)
{
printf("%i\n",2*x);
}
lib2.hइसी हैडर
#ifndef LIB2_H_INCLUDED
#define LIB2_H_INCLUDED
#ifdef __cplusplus
extern “C” {
#endif
void fun2 (int x);
#ifdef __cplusplus
}
#endif
#endif /* LIB2_H_INCLUDED */
संबंधित मुद्दे
- 1. हास्केल को स्थिर पुस्तकालय में कैसे संकलित करें?
- 2. एक स्थिर पुस्तकालय में संस्करण संख्या को कैसे स्टोर करें?
- 3. जीसीसी/लिनक्स: एक स्थिर पुस्तकालय को .so में जोड़ना?
- 4. स्थिर बाइनरी कैसे संकलित करें?
- 5. एक आश्रित स्थिर पुस्तकालय में बूस्ट कैसे लिंक करें
- 6. जीसीसी संकलित स्थिर पुस्तकालय में क्या होता है?
- 7. स्थिर पुस्तकालय
- 8. एक स्थिर पुस्तकालय की सामग्री
- 9. डीएलएल को फ्रीटाइप संकलित करना (स्थिर पुस्तकालय के विपरीत)
- 10. VS2010: एक भी पुस्तकालय में लिंक स्थिर
- 11. एक स्थिर पुस्तकालय में वीसी ++ संसाधन
- 12. सी पुस्तकालय को .NET dll में कैसे संकलित करें?
- 13. लिंक करना स्थिर पुस्तकालयों, कि शेयर एक और स्थिर पुस्तकालय
- 14. सी ++ स्थिर पुस्तकालय में साझा वैश्विक चर
- 15. CMake: एकाधिक, एक ही स्थिर पुस्तकालय
- 16. सार्वभौमिक आईओएस स्थिर पुस्तकालय कैसे बनाएं
- 17. सी ++ स्थिर पुस्तकालय
- 18. समारोह स्थिर पुस्तकालय
- 19. लिनक्स में फोरट्रान 77 फाइलों को कैसे संकलित करें?
- 20. एक एक्सकोड परियोजना को स्थिर पुस्तकालय या ढांचे में कैसे परिवर्तित करें?
- 21. लिनक्स साझा पुस्तकालय सी ++
- 22. स्थिर पुस्तकालय में .pch फ़ाइल पढ़ना
- 23. लिनक्स में संकलित/रन असेंबलर?
- 24. स्थिर और साझा सी ++ पुस्तकालय दोनों बनाना
- 25. जीसीसी का उपयोग कर सी पर पुस्तकालय संकलित कैसे करें?
- 26. बूस्ट। स्थिर पुस्तकालय
- 27. "अपरिभाषित संदर्भ" जब एक स्थिर पुस्तकालय
- 28. एक स्थिर पुस्तकालय (सेमीके विकल्प) के रूप में ओपनसीवी
- 29. स्थिर पुस्तकालय में संरचना परिभाषा को छिपाएं
- 30. मेरी स्थिर पुस्तकालय इतनी बड़ी क्यों है?
स्पष्टीकरण के लिए धन्यवाद। –
सर्वोत्तम उत्तर उदाहरण वाले हैं, महान काम :) – Youda008
इससे यह पता लगाने में मदद मिलेगी कि आदेश क्या करते हैं, और वे क्या हासिल करना चाहते हैं। खासकर इस मामले में 'ar' को स्पष्टीकरण की आवश्यकता है, क्योंकि यह स्थिर पुस्तकालय बनाने की कुंजी है। – Joost