热门问题
时间线
聊天
视角

静态库

来自维基百科,自由的百科全书

Remove ads

计算机科学中,靜態庫(英語:Static library, Statically-linked library),或称静态链接库,是一個外部函式與變數的集合體。靜態函式庫的檔案內容,通常包含一堆程式設計師自定的變數與函式,其內容不像動態連結庫那麼複雜,在編譯期間由編譯器链接器將它整合至應用程式內,並製作成目的檔以及可以獨立運作的執行檔。而這個執行檔與編譯執行檔的程序,都是一種程式的靜態构建(static build)。历史上,程序库只能是静态的。静态库要么在构建时组合成为单个静态链接的可执行文件,要么在运行时加载到相应可执行文件的地址空间中。该地址空间是静态的,在编译期或链接期确定,与动态链接库不同。

需要特别指明的一点是,Linux系统下的静态库文件并非ELF二进制文件[1]

与动态链接库的比较

优点

只需保证在开发者的计算机有正确的文件,在以二进制发布时不需考虑在使用者的计算机上库文件是否存在及版本问题,可避免DLL地狱等问题。

缺点

生成的可执行文件体积较大。当初正是为了避免此问题,才开发了动态库技术。

实现及使用

靜態函式庫可以用簡單的C語言或是C++程式碼去建立它。這兩個程式語言提供關鍵字指定函式與變數是否為外部(external)或是內部(internal)連結,此外,還提供其他的特性。

建立這類的函式庫時,將函式或是變數匯出(export)一定要用外部連結(external linkage )的語法特別指定它們。

静态库文件名为lib*.a,在使用了其中的函数之后,使用-l*参数要求连接器连入。

例如,在许多系统上,当使用了math.h中的函数后,需要使用-lm参数连接libm.a文件。

静态库文件名为*.lib,在使用了其中的函数之后,使用#pragma comment(lib,"*")预编译指令要求连接器连入。

原始碼範例

C/C++

Thumb
這是主函式的原始碼與執行結果
更多信息 標頭檔案(Header File), 原始碼檔案(Source File) ...
Remove ads

参见

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads