Dưới đây là một ví dụ makefile đầy đủ:
trang điểm
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)
giải thích về makefile:
- target: prerequisites- người đứng đầu quy tắc
- $@- có nghĩa là mục tiêu
- $^- có nghĩa là tất cả các điều kiện tiên quyết
- $<- có nghĩa chỉ là điều kiện tiên quyết đầu tiên
- ar- một công cụ Linux để tạo, sửa đổi và trích xuất từ kho lưu trữ xem các trang hướng dẫn để biết thêm thông tin . Các tùy chọn trong trường hợp này có nghĩa là:- 
- r- thay thế các tập tin hiện có trong kho lưu trữ
- c- tạo một kho lưu trữ nếu chưa tồn tại
- s- tạo một chỉ mục tệp đối tượng vào kho lưu trữ
 
Để kết luận : Thư viện tĩnh trong Linux không gì khác hơn là một kho lưu trữ các tệp đối tượng.
main.c  sử dụng lib
#include <stdio.h>
#include "lib.h"
int main ( void )
{
    fun1(10);
    fun2(10);
    return 0;
}
lib.h  tiêu đề chính của libs
#ifndef LIB_H_INCLUDED
#define LIB_H_INCLUDED
#include "lib1.h"
#include "lib2.h"
#endif
lib1.c  nguồn lib đầu tiên
#include "lib1.h"
#include <stdio.h>
void fun1 ( int x )
{
    printf("%i\n",x);
}
lib1.h  tiêu đề tương ứng
#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  nguồn lib thứ hai
#include "lib2.h"
#include <stdio.h>
void fun2 ( int x )
{
    printf("%i\n",2*x);
}
lib2.h  tiêu đề tương ứng
#ifndef LIB2_H_INCLUDED
#define LIB2_H_INCLUDED
#ifdef __cplusplus
   extern “C” {
#endif
void fun2 ( int x );
#ifdef __cplusplus
   }
#endif
#endif /* LIB2_H_INCLUDED */