跳转至

Makefile 静态库编译#

1 程序#

add.hpp

#ifndef ADD_HPP
#define ADD_HPP
int add(int a, int b);

#endif // ADD_HPP

add.cpp
int add(int a, int b)
{
    return a+b;
}

minus.hpp
#ifndef MINUS_HPP
#define MINUS_HPP
int minus(int a, int b);

#endif // MINUS_HPP

minus.cpp
int minus(int a, int b)
{
    return a-b;
}

main.cpp
#include <stdio.h>
#include "add.hpp"
#include "minus.hpp"

int main()
{
    int a=10; int b=5;
    int res = add(a, b);
    printf("a + b = %d\n", res);
    res = minus(a, b);
    printf("a - b = %d\n", res);

    return 0;
}

2 编译过程#

  • 源文件[.c/cpp] -> Object文件[.o]
    g++ -c [.c/cpp][.c/cpp]... -o [.o][.o]... -I[.h/hpp] -g
    
  • Object文件[.o] -> 静态库文件[lib库名.a]
    ar -r [lib库名.a] [.o][.o]...
    
  • main 文件[.c/cpp] -> Object 文件[.o]
    g++ -c [main.c/cpp] -o [.o] -I[.h/hpp] 
    
  • 链接 main 的 Object 文件与静态库文件 [lib库名.a]
    g++ [main.o] -o [可执行文件] -l[库名] -L[库路径]