用makefile編譯產生.a檔案(linux靜態庫),並編譯進可執行檔中__linux

來源:互聯網
上載者:User

檔案清單:
代碼檔案

/* 下列代碼儲存到 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

效果如下圖

運行:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.