এখানে একটি সম্পূর্ণ মেকফিল উদাহরণ:
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
- সংরক্ষণাগারটিতে একটি অবজেক্ট-ফাইল সূচক তৈরি করুন
উপসংহারে : লিনাক্সের অধীনে স্থির গ্রন্থাগার বস্তু ফাইলগুলির সংরক্ষণাগার ছাড়া আর কিছুই নয়।
main.c লিব ব্যবহার করে
#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.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 */