專案引入了多個三方靜態庫,其中包含的.o檔案重名,但是幸運的是函式不重名,類不重名,因此只需要在ar時重新命名.o檔案即可。
makefile中:
tmp賦值為取出檔名(第一步去除目錄和第二步去除字尾)
makefile中for開始執行的是shell,所以取變數需要多加乙個$轉義,因為是shell,所以也無法使用notdir,basename等makefile中使用的函式,會提示找不到。
然後再將所有.o檔案都批量重新命名就好了(加了第三方庫名稱區分)
ps:靜態庫就是一堆.o檔案的集合,每個.o會包含一些函式位址,ar -x就是將靜態庫.a檔案解壓成一堆.o檔案,然後用ar -rcu將這一堆.o檔案壓到最終想生成的靜態庫.a檔案,實現把多個.a檔案合併成乙個.a檔案。
最後記得用ranlib ***.a更新這個.a。
用Makefile來操作docker
廢話不說,直接乾貨 include env make ns your docker namespace version latest repo your docker repo name name name of the image instance default phony build push...
用Makefile編譯普通C C 專案
在用實驗室的伺服器進行c 編譯的時候,由於沒有圖形介面,只能在shell 中進行操作,因此需要學習用gcc g 進行編譯,如果命令多的話,就要用到makefile 來完成批量的shell 命令。跟我一起寫makefile 這個材料是自學寫 makefile 的優秀材料。有任何問題都可以參照。標頭檔案...
Linux 用makefile編譯程式
makefile可以方便快捷的編譯我們編寫的程式,也可以處理一些檔案,例如刪除檔案,檢視檔案。初學者對makefile的掌握如下 makefile的結構 第一行 編譯完成的檔名稱 編譯檔案所需的原始檔 第二行 游標在行首的時候按一下tab鍵,一般情況下,在vim下按完tab後,之後的字母會變成紅色 ...