用makefile编译生成.a文件(linux静态库),并编译进可执行文件中

来源:互联网 发布:windows软件包下载 编辑:程序博客网 时间:2024/06/05 20:39

文件列表:
这里写图片描述

代码文件

/* 下列代码保存到 plus.cpp */int my_plus(int x,int y)  {      return x + y;  }  
/* 下列代码保存到 minus.cpp */int my_minus(int x,int y)  {      return x - y;  }  
/* 下列代码保存到 my_math.h */int my_plus(int x,int y); int my_minus(int x,int y);
/* 下列代码保存到 lib_test.cpp */#include"my_math.h"  #include<stdio.h>  int main()  {      printf("[my_plus ] = %d\n",my_plus(3,5));    printf("[my_minus] = %d\n",my_minus(3,5));    return 0;} 

makefile文件

/* 下面内容保存到 lib.mak */SHELL = /bin/sh  CC = g++AR = ar  CFLAG = -O2 -W -Wall  INCLUDE_PATH = -I.  LIB_TARGET = ./libmath.a  PLUS_OBJ = plus.o  PLUS_SRC = ./plus.cpp  MIN_OBJ = minus.o MIN_SRC = ./minus.cppall : $(LIB_TARGET)  $(PLUS_OBJ): $(PLUS_SRC)      $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(PLUS_SRC)  $(MIN_OBJ): $(MIN_SRC)      $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(MIN_SRC)  $(LIB_TARGET) : $(PLUS_OBJ)  $(MIN_OBJ)    $(AR) cq $@ $^      rm -f $(PLUS_OBJ)    rm -f $(MIN_OBJ)clean:      rm -f $(PLUS_OBJ)    rm -f $(LIB_TARGET)
/* 下面内容保存到 app.mak */SHELL = /bin/sh  CC = g++  INCLUDE_PATH = -I.  TEST_TARGET = ./test  TEST_SRC = ./lib_test.cpp  LDFLAGS := ./libmath.a  all :    $(CC) -g $(TEST_SRC) $(LDFLAGS) -o $(TEST_TARGET) $(INCLUDE_PATH)  clean:    rm -f $(TEST_TARGET)

编译连接

编译生成静态库
在linux终端使用命令:

make -flib.mak

效果如下图
这里写图片描述

编译生成可执行文件
使用命令:

make -fapp.mak

效果如下图
这里写图片描述

运行:
这里写图片描述

0 0