Linux 靜態庫的製做

1.建立一個文件夾,名字隨意,這裏使用staticlib,內部分別建立文件目錄include,src,lib,還有main.c文件。內部結構圖入圖所示git

2.在include的head.h文件中聲明方法github

  • #ifndef _HEAD_H
  • #define _HEAD_H
  • int add(int ,int);
  • int sub(int ,int);
  • int mul(int ,int);
  • int div(int ,int);
  • #endif

3.在add.c中寫代碼markdown

  • #include "head.h"
  • int add(int a, int b)
  • {
  • int result = a + b;
    複製代碼
  • return result;
    複製代碼
  • }

4.在div.c中寫代碼oop

  • #include "head.h"
  • int div(int a, int b)
  • {
  • int result = a / b;
    複製代碼
  • return result;
    複製代碼
  • }

5.在mul.c中寫代碼ui

  • #include "head.h"
  • int mul(int a, int b)
  • {
  • int result = a * b;
    複製代碼
  • return result;
    複製代碼
  • }

6.在sub.c中寫代碼spa

  • #include "head.h"
  • int sub(int a, int b)
  • {
  • int result = a - b;
    複製代碼
  • return result;
    複製代碼
  • }

7.將除了main.c以外的.c文件進行編譯,生成.o文件code

  • 由於要生成目標文件的.c文件都放在src文件中了,因此cd到src文件orm

  • 而後執行gcc -c -I ../include *.c
    複製代碼
  • gcc -c xxx.c 是生成.o文件命令
    複製代碼
  • -I 是導入的功能
    複製代碼
  • ../include   ..是上一級,也就是上一級的include文件
    複製代碼
  • -I ../include 就是導入上級中的include文件中的內容
    複製代碼
  • *.c 是通配符,表示當前文件夾下的全部.c文件
    複製代碼

8.將.o文件進行打包(當前在src目錄下)get

執行	ar src libCaculate.a *.o 
複製代碼

而後會在當前目錄下生成一個libCaculate.a的靜態庫 9.將靜態庫移動到lib文件夾下it

執行 mv libCaculate.a ../lib(此時已經移到lib文件夾下了)
cd .. (回到上一級,即staticlib級)
tree
複製代碼

  1. 連接階段(staticlib文件夾下)
  • gcc main.c -I include -L lib -l Caculate

  • 或者

  • gcc main.c -I include -L lib -l Caculate -o 指定名字

    會生成一個對應的a.out文件/指定名字文件

11 執行

./a.out 或者 ./指定名字
複製代碼

demo地址: github.com/suifumin/Li…

相關文章
相關標籤/搜索