fbpx
维基百科

静态库

计算机科学中,靜態庫(英語:Static library, Statically-linked library),或称靜態函式庫,是一個外部函式與變數的集合體。靜態函式庫的檔案內容,通常包含一堆程式設計師自定的變數與函式,其內容不像動態連結庫那麼複雜,在編譯期間由編譯器链接器將它整合至應用程式內,並製作成目的檔以及可以獨立運作的執行檔。而這個執行檔與編譯執行檔的程序,都是一種程式的靜態建立(static build)。以過去的觀點來說,函式庫只能算是靜態(static)類型。

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

与动态链接库的比较 编辑

优点 编辑

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

缺点 编辑

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

实现及使用 编辑

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

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

GCC 编辑

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

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

Visual C++ 编辑

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

原始碼範例 编辑

C/C++ 编辑

 
這是主函式的原始碼與執行結果
靜態函式庫的原始碼範例
標頭檔案(Header File) 原始碼檔案(Source File)
// static_lib.h # ifndef _STATIC_LIB_H_ # define _STATIC_LIB_H_ # include <iostream> # include <string> # include <Windows.h> using namespace std; namespace STAIC_LIB { BOOL PRINT(__in string& STRING); } # endif 
// static_lib.cpp # include "static_lib.h" BOOL STAIC_LIB::PRINT(__in string& STRING) { if ( STRING.empty() ) { return FALSE; } // 顯示一個字串 cout<<STRING<<endl; return TRUE; } 

参见 编辑

外部連結 编辑

  1. ^ . [2021-09-02]. (原始内容存档于2022-06-29). 

静态库, 此條目需要补充更多来源, 2015年1月6日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 在计算机科学中, 靜態庫, 英語, static, library, statically, linked, library, 或称靜態函式庫, 是一個外部函式與變數的集合體, 靜態函式庫的檔案內容, 通常包含一堆程式設計師自定的變. 此條目需要补充更多来源 2015年1月6日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 静态库 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 在计算机科学中 靜態庫 英語 Static library Statically linked library 或称靜態函式庫 是一個外部函式與變數的集合體 靜態函式庫的檔案內容 通常包含一堆程式設計師自定的變數與函式 其內容不像動態連結庫那麼複雜 在編譯期間由編譯器與链接器將它整合至應用程式內 並製作成目的檔以及可以獨立運作的執行檔 而這個執行檔與編譯執行檔的程序 都是一種程式的靜態建立 static build 以過去的觀點來說 函式庫只能算是靜態 static 類型 需要特别指明的一点是 Linux系统下的静态库文件并非ELF二进制文件 1 目录 1 与动态链接库的比较 1 1 优点 1 2 缺点 2 实现及使用 2 1 GCC 2 2 Visual C 3 原始碼範例 3 1 C C 4 参见 5 外部連結与动态链接库的比较 编辑优点 编辑 只需保证在开发者的计算机有正确的库文件 在以二进制发布时不需考虑在使用者的计算机上库文件是否存在及版本问题 可避免DLL地狱等问题 缺点 编辑 生成的可执行文件体积较大 当初正是为了避免此问题 才开发了动态库技术 实现及使用 编辑靜態函式庫可以用簡單的C語言或是C 程式碼去建立它 這兩個程式語言提供關鍵字指定函式與變數是否為外部 external 或是內部 internal 連結 此外 還提供其他的特性 建立這類的函式庫時 將函式或是變數匯出 export 一定要用外部連結 external linkage 的語法特別指定它們 GCC 编辑 静态库文件名为lib a 在使用了其中的函数之后 使用 l 参数要求连接器连入 例如 在许多系统上 当使用了math h中的函数后 需要使用 lm参数连接libm a文件 Visual C 编辑 静态库文件名为 lib 在使用了其中的函数之后 使用 pragma comment lib 预编译指令要求连接器连入 原始碼範例 编辑C C 编辑 nbsp 這是主函式的原始碼與執行結果靜態函式庫的原始碼範例 標頭檔案 Header File 原始碼檔案 Source File static lib h ifndef STATIC LIB H define STATIC LIB H include lt iostream gt include lt string gt include lt Windows h gt using namespace std namespace STAIC LIB BOOL PRINT in string amp STRING endif static lib cpp include static lib h BOOL STAIC LIB PRINT in string amp STRING if STRING empty return FALSE 顯示一個字串 cout lt lt STRING lt lt endl return TRUE 参见 编辑函式庫 链接器 载入器 共享库 动态链接库 外部变量 目标文件 预绑定外部連結 编辑The C Book Linkage 页面存档备份 存于互联网档案馆 File format differences between a static library a and a shared library so 2021 09 02 原始内容存档于2022 06 29 取自 https zh wikipedia org w index php title 静态库 amp oldid 72964804, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。