【Linux系统编程学习】 静态库的制作与使用
此為牛客網(wǎng)Linux C++課程 1.4&1.5 的課程筆記。
0. 關(guān)于靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)
庫(kù)就是封裝好的、可服用的代碼,而靜態(tài)和動(dòng)態(tài)是指鏈接。
這節(jié)課講的是靜態(tài)庫(kù),是指在鏈接階段,會(huì)將匯編生成的目標(biāo)文件.o與引用到的庫(kù)一起鏈接打包到可執(zhí)行文件中,所以稱為靜態(tài)鏈接。
靜態(tài)庫(kù)本質(zhì)上是很多.o文件的集合,鏈接的時(shí)候這些.o文件與目標(biāo)文件一起合成一個(gè)可執(zhí)行文件。
1. 靜態(tài)庫(kù)命名規(guī)則
2. 靜態(tài)庫(kù)的制作
演示如下:
一個(gè)簡(jiǎn)易版計(jì)算器程序目錄如下:
然后執(zhí)行:
用gcc編譯成目標(biāo)文件
然后執(zhí)行:
ar rcs libcalc.a add.o div.o mult.o sub.o生成了名為libcalc.a的靜態(tài)庫(kù)文件。
3.靜態(tài)庫(kù)的使用
首先將剛才涉及到的文件整理一下:
此時(shí)編譯main.c文件,執(zhí)行:
報(bào)錯(cuò),找不到頭文件:
在實(shí)際開(kāi)發(fā)中,制作好庫(kù)以后,要把庫(kù)文件和頭文件都發(fā)給調(diào)用者。
此時(shí)需要用到上一節(jié)課學(xué)的gcc參數(shù):
然后執(zhí)行:
用-I參數(shù)在include里找頭文件。
結(jié)果又報(bào)錯(cuò):
找不到庫(kù)文件,然后使用-L和-l指定庫(kù)的路徑和庫(kù)的名稱,執(zhí)行:
解釋:-L ./lib表示搜索的庫(kù)的路徑,-l calc指定使用的庫(kù),這里要注意庫(kù)的名稱要填calc,而不是libcalc.a,指定庫(kù)名稱的時(shí)候去掉lib和后綴.a。
運(yùn)行成功,生成可執(zhí)行文件app,此后可執(zhí)行./app執(zhí)行文件。
總結(jié)
以上是生活随笔為你收集整理的【Linux系统编程学习】 静态库的制作与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剩女的嫁衣剧情介绍
- 下一篇: 【Linux系统编程学习】 动态库的制作