यहाँ एक पूर्ण मेकअप उदाहरण:
makefile
TARGET = prog
$(TARGET): main.o lib.a
gcc $^ -o $@
main.o: main.c
gcc -c $< -o $@
lib.a: lib1.o lib2.o
ar rcs $@ $^
lib1.o: lib1.c lib1.h
gcc -c -o $@ $<
lib2.o: lib2.c lib2.h
gcc -c -o $@ $<
clean:
rm -f *.o *.a $(TARGET)
मेकफाइल को समझाते हुए:
target: prerequisites
- नियम प्रमुख
$@
- लक्ष्य का मतलब है
$^
- का अर्थ है सभी आवश्यक शर्तें
$<
- मतलब सिर्फ पहली शर्त
ar
- अभिलेखागार से एक लिनक्स उपकरण बनाने, संशोधित करने और निकालने के लिए, अधिक जानकारी के लिए मैन पेज देखें । इस मामले में विकल्प का मतलब है:
r
- संग्रह के अंदर मौजूद फ़ाइलों को बदलें
c
- अगर पहले से मौजूद नहीं है तो एक आर्काइव बनाएं
s
- संग्रह में एक ऑब्जेक्ट-फ़ाइल इंडेक्स बनाएं
निष्कर्ष निकालने के लिए : लिनक्स के तहत स्थिर पुस्तकालय ऑब्जेक्ट फ़ाइलों के संग्रह से अधिक कुछ नहीं है।
lib का उपयोग कर main.c
#include <stdio.h>
#include "lib.h"
int main ( void )
{
fun1(10);
fun2(10);
return 0;
}
lib.h लिबास मुख्य हैडर
#ifndef LIB_H_INCLUDED
#define LIB_H_INCLUDED
#include "lib1.h"
#include "lib2.h"
#endif
lib1.c प्रथम परिवाद स्रोत
#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 दूसरा कार्यकारी स्रोत
#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 */