我想我的化妝自己的圖書館,並有它使用相同的語法標準C庫,在如何在C中創建和使用我自己的靜態庫?
#include<mylib.h>
所以它看起來像的#include和一些庫附帶C.
我可以使庫是靜態的而不是鏈接,這樣我就可以在沒有附加參數的情況下在GCC中編譯它,就像我使用另一個庫,如stdio.h或string.h一樣?
我想我的化妝自己的圖書館,並有它使用相同的語法標準C庫,在如何在C中創建和使用我自己的靜態庫?
#include<mylib.h>
所以它看起來像的#include和一些庫附帶C.
我可以使庫是靜態的而不是鏈接,這樣我就可以在沒有附加參數的情況下在GCC中編譯它,就像我使用另一個庫,如stdio.h或string.h一樣?
除#include「mylib.h」外,在使用庫時,還需要將-lmylib
命令行添加到編譯器(更具體地說是鏈接器)。我假設通過ar
命令創建的庫存檔命名爲libmylib.a
。
通常,我們不寫'手動'構建指令,但我們依靠生成構建鏈的工具。其中有很多,最知道的可能是autotools和cmake(在Linux下)。
我建議你看看cmake的例子和/或文檔來建立你的代碼。
有相當多的靜態和動態庫之間的差異,你也將需要以某種方式打包的lib,如果你真的想用它像「標準」 LIB(如libxml2的,OpenSSL的,等等)
有很多話要說,但你應該先看看'如何構建'你的lib,然後看看如何使它易於使用,恕我直言。
這似乎很簡單。
開發庫(根據需要創建多個源文件)。
使用像CMAKE這樣的工具(我強烈推薦)將源文件構建到共享庫(.so)中。
該庫複製到庫(即/usr/lib
)
後來,所有你需要做的就是導入您的lib目錄下:使用#include<mylib.h>
源(I) (ii)在GCC編譯器中構建(也使用CMAKE)或使用標誌(-lmylib
)時:gcc -lmylib myfiles.c -o myoutput。
我想你問的是如何建立一個靜態庫,而不是一個動態鏈接的一個HTTP://www.cs.dartmouth.edu/~campbell/cs50/buildlib.html – inbinder
「無不得不添加額外的命令行參數「有了這個約束:你不能! – Olaf
沒有皇家之路。抱歉。 –