2015-11-02 47 views
1

我想我的化妝自己的圖書館,並有它使用相同的語法標準C庫,在如何在C中創建和使用我自己的靜態庫?

#include<mylib.h> 

所以它看起來像的#include和一些庫附帶C.

我可以使庫是靜態的而不是鏈接,這樣我就可以在沒有附加參數的情況下在GCC中編譯它,就像我使用另一個庫,如stdio.h或string.h一樣?

+0

我想你問的是如何建立一個靜態庫,而不是一個動態鏈接的一個HTTP://www.cs.dartmouth.edu/~campbell/cs50/buildlib.html – inbinder

+0

「無不得不添加額外的命令行參數「有了這個約束:你不能! – Olaf

+0

沒有皇家之路。抱歉。 –

回答

2

除#include「mylib.h」外,在使用庫時,還需要將-lmylib命令行添加到編譯器(更具體地說是鏈接器)。我假設通過ar命令創建的庫存檔命名爲libmylib.a

2

通常,我們不寫'手動'構建指令,但我們依靠生成構建鏈的工具。其中有很多,最知道的可能是autotools和cmake(在Linux下)。

我建議你看看cmake的例子和/或文檔來建立你的代碼。

有相當多的靜態和動態庫之間的差異,你也將需要以某種方式打包的lib,如果你真的想用它像「標準」 LIB(如libxml2的,OpenSSL的,等等)

有很多話要說,但你應該先看看'如何構建'你的lib,然後看看如何使它易於使用,恕我直言。

3

這似乎很簡單。

  • 開發庫(根據需要創建多個源文件)。

  • 使用像CMAKE這樣的工具(我強烈推薦)將源文件構建到共享庫(.so)中。

  • 該庫複製到庫(即/usr/lib

  • 後來,所有你需要做的就是導入您的lib目錄下:使用#include<mylib.h>源(I) (ii)在GCC編譯器中構建(也使用CMAKE)或使用標誌(-lmylib)時:gcc -lmylib myfiles.c -o myoutput。

相關問題