用makefile編譯生成.a檔案(linux靜態庫),並編譯進可執行檔案中
檔案列表:
程式碼檔案
/* 下列程式碼儲存到 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.cpp
all : $( 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 [email protected] $^
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
效果如下圖
執行:
相關推薦
用makefile編譯生成.a檔案(linux靜態庫),並編譯進可執行檔案中
檔案列表: 程式碼檔案 /* 下列程式碼儲存到 plus.cpp */ int my_plus(int x,int y) { return x + y; }
Linux自動備份檔案(linux計劃任務)
今天有人讓我給寫個指令碼,說是讓linux定時備份資料和資料,每次備份的資料檔名不一樣,並刪除超過一定時期的資料,這個聽起來挺有意思的,具體看下面吧: 1,寫一個指令碼backup.sh內容如下 #!/bin/sh cp -r /home/..../data /tm
C#程序調用cmd.exe執行其他exe進程(並且含多個參數),並把進程結果返回給字符串
() stat syntax || 錯誤 void dia clas ring 1.關鍵代碼部分。 using System.Diagnostics; public class CmdHelper {
C++讀寫XML檔案(使用tinyxml庫)
使用以下程式碼之前,需要下載TinyXml庫,幷包含到工程下 #include <stdio.h> #include "tinyxml.h" #include <iostream> #include <cstring> usin
查詢MDB中高程點的高程值有0值的圖幅(用遊標遍歷查詢某個欄位的值),並將查到的結果寫入到TXT中
1、 mdbs = arcpy.ListWorkspaces("*","Access") 2、 FeatureClasses = arcpy.ListFeatureClasses() 3、 Fields = arcpy.ListFields(FeatureClass) 4、 cursor =
C/C++從鍵盤讀入連續輸入的資料(以回車結束),並將資料存入連結串列。
要求新建一個連結串列,連結串列從鍵盤讀取一組連續輸入的資料,每個資料之間以一個空格分隔,當遇到換行符時,停止讀取。 下面是自己總結的比較簡單的實現方法。 C: #include <stdio.h> typedef struct ListNode *node; s
【原創原始碼】批量儲存圖片到一定數量後新建資料夾繼續儲存(檔名不重複),並記錄圖片的ID、url地址以及名稱
最近寫的一小段程式碼,具體實現的功能如下: 1.反覆讀取本地一張圖片,使用opencv更改其大小為112*112 2.使用GUID給圖片命名(保證圖片名稱不會重複) 3.建立資料夾,每個資料夾存放400個圖片,滿400後建立新的資料夾(以時間命名)繼續存放...以此類推 4.記錄每張
java專案到處jar包,轉成.exe可執行檔案
需要使用的工具: eclipse,exe4j,iocFx2(製作ico圖示) 具體轉換步驟分為兩步: 一、將java專案到處成jar包; 二、將匯出的jar包轉換成exe可執行檔案; 步驟一:將jav
Ubuntu14.04 apache2 配置 CGI(並測試:shell,可執行檔案,python)
#PS:要轉載請註明出處,本人版權所有 #PS:這個只是 《 我自己 》理解,如果和你的 #原則相沖突,請諒解,勿噴 環境: 59~14.04.1-Ubuntu SMP Tue Jul 7 15:07:27 UTC 2015 apache
Android程式中,內嵌ELF可執行檔案-- Android開發C語言混合程式設計總結
前言 都知道的,Android基於Linux系統,然後覆蓋了一層由Java虛擬機器為核心的殼系統。跟一般常見的Linux+Java系統不同的,是其中有對硬體驅動進行支援,以避開GPL開源協議限制的HAL硬體抽象層。 大多數時候,我們使用JVM語言進行程式設計,比如傳統的Java或者新貴Kotlin。碰到對
linux執行應用程式not found問題(交叉編譯生成的可執行檔案)
[email protected]:~/Desktop/em35x-ezsp$readelf -a build/ZigBee/ZigBee |grep NEEDED 0x00000001 (NEEDED) Shared library: [libreadli
linux 下怎麼編譯生成a.out檔案?
編輯儲存原始檔後 在shell中執行 gcc test.c 如果沒有編譯錯誤,gcc會在當前目錄下生成一個a.out檔案, 然後可以 ./a.out 結果出來了 當然你也可以使用 –o 選項給生成的檔案起一個別的名字,像 gcc test.c –o
Makefile 編譯生成多個可執行檔案
all:server client server:server.c gcc $< -o [email protected] client:client.c gcc $< -o [email protected] clean: &nb
Linux C 源程式 編譯連線生成 可執行檔案
源程式 test.c第一種 ,編譯 gcc -c test.c -o test.o 連線 gcc -o test test.o第二種。 編譯連線 gcc -o test test.c執行 ./
在Windows平臺用visual studio編譯的可執行檔案部署時報:應用程式無法正常啟動0xc000007b(跟DirectX9無關的原因)
最近在做EasyDarwin開源流媒體伺服器Windows版本編譯與部署時發現一個問題,在開發機本機執行都很正常,但是部署到目標機器(未安裝vs等開發環境)時,莫名其妙報出了“應用程式無法正常啟動0xc000007b”的錯誤,網上搜了一遍,大多數解決方案和部落格
android studio ndk-build 編譯C生成.so檔案(ndk基礎篇)
一、概要 最近專案需要,要把程式碼中加密的部分打包成so檔案,剛開始接觸的時候真是痛苦呀,網上好多資料,都不是很詳細,步驟也不清晰,所以我整理了一下,希望大家喜歡。 現在android studio打包so檔案有兩種方式,第一種是ndk-build編譯專案,還有一種用
Linux:基礎IO(檔案描述符分配規則)(重定向)(inode)(軟硬連結)(動態庫靜態庫)
目錄 檔案描述符的分配規則 重定向原理 FILE 總結 理解檔案系統 inode是什麼 inode內容 硬連結 軟連結 軟硬連結區別: 動態庫和靜態庫 如何生成自己的動態庫和靜態庫 如何連結一個庫生成可執行程式 檔案描述符的分配規則 最
[PYTHON]_ELVE_Python原始碼檔案編譯成可執行檔案(支援macOS High Sierra和window 10)
#0x01 背景 這兩天寫了一個抽獎的Python指令碼,要生成可執行檔案,總不能一直在sublime上執行吧,或者執行前先安裝Python,所以就查了一下怎麼生成可執行檔案,本篇包括mac下和win下,經本人測試,mac下生成.app(mac下的可執行檔案為.app字尾)較win下容易一些。 我用的Py
QtEmbedded-4.8.6-arm 編譯選擇從 動態庫變化到靜態庫 時,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用
問題:QtEmbedded-4.8.6-arm 編譯選擇從 動態庫到靜態庫 時,發現的一個疑惑:,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用 具體現象: 我最初是使用動態庫的 QtEmbedded-4.8.6-arm (編譯器選擇時,是 ./co
VS2010靜態編譯生成.exe可執行檔案
VS2010靜態編譯生成的.exe可執行檔案,可以免安裝在其他電腦直接執行 靜態編譯:就是在編譯可執行檔案的時候,將可執行檔案需要呼叫的對應動態連結庫(.so)中的部分提取出來,連結到可執行檔案中去,使可執行檔案在執行的時候不依賴動態連結庫。 編譯方式: 第1種: