国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))

這篇具有很好參考價(jià)值的文章主要介紹了mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

筆者一直以來(lái)都對(duì)mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法存疑,于是做了一些測(cè)試,這篇文章記錄了測(cè)試過(guò)程和測(cè)試結(jié)果,如果只想知道結(jié)果可以跳轉(zhuǎn)到文章末尾

一、準(zhǔn)備工作

首先準(zhǔn)備三個(gè)測(cè)試文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
其中add.c最終會(huì)被編譯會(huì)靜態(tài)庫(kù)或動(dòng)態(tài)庫(kù),被測(cè)試文件main.c調(diào)用
使用如下命令構(gòu)建靜態(tài)庫(kù)

gcc -c add.c -o add.o
ar rcs libadd.a add.o

得到靜態(tài)庫(kù)如下:
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
接著使用如下命令構(gòu)建動(dòng)態(tài)庫(kù)

gcc -fPIC -shared add.c -o libadd.dll

得到動(dòng)態(tài)庫(kù)如下:
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))

二、測(cè)試過(guò)程

1.當(dāng)一個(gè)靜態(tài)庫(kù)和一個(gè)動(dòng)態(tài)庫(kù)重名,并且位于同一文件夾下,編譯器優(yōu)先鏈接哪一個(gè)

首先把五個(gè)文件放在同一路徑下
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
已知在編譯指令中,鏈接libadd.a 和鏈接libadd.dll都只需要加上以下參數(shù)

-ladd

也即這里靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)可以看做是重名的,于是我們先來(lái)測(cè)試當(dāng)輸入-ladd的時(shí)候,gcc會(huì)默認(rèn)鏈接哪個(gè)庫(kù)
輸入指令:

gcc main.c -I ./ -L ./ -ladd -o normal_two_implicit

得到文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
文件名是為了對(duì)比實(shí)驗(yàn)方便而設(shè)置的,其中normal意味著正常狀態(tài),與后面要進(jìn)行的反常測(cè)試相對(duì)應(yīng),two表示靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)同時(shí)位于同一文件夾下,與之后將某個(gè)庫(kù)移走單獨(dú)測(cè)試剩下的庫(kù)相對(duì)應(yīng),implicit意為在鏈接命令中隱式指出庫(kù)名稱(chēng)(即-l格式的指明方法),與之后顯示給出庫(kù)的全稱(chēng)的測(cè)試對(duì)應(yīng)。
雖然現(xiàn)在得到了可執(zhí)行文件,但是現(xiàn)在我們還無(wú)法判斷默認(rèn)鏈接的是哪一個(gè)庫(kù),于是繼續(xù)進(jìn)行測(cè)試
先把libadd.dll暫時(shí)移到其他文件夾里,只保留libadd.a,再鍵入同樣的命令:

gcc main.c -I ./ -L ./ -ladd -o normal_a_implicit

得到文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
這里的exe一定鏈接的是靜態(tài)庫(kù),而且和上一個(gè)exe大小完全相同,因此合理推測(cè)前一個(gè)exe也是鏈接了靜態(tài)庫(kù),也即:當(dāng)兩種同名庫(kù)同時(shí)存在于同一文件夾,并且使用-l格式參數(shù)隱式指出鏈接庫(kù)名稱(chēng)時(shí),gcc優(yōu)先鏈接后綴為.a的庫(kù)(為什么不說(shuō)優(yōu)先鏈接靜態(tài)庫(kù)?后續(xù)的測(cè)試會(huì)說(shuō)明)
然后把libadd.a暫時(shí)移到其他文件夾里,只保留libadd.dll,再鍵入同樣的命令:

gcc main.c -I ./ -L ./ -ladd -o normal_dll_implicit

得到文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
文件大小只有54KB,小于前兩個(gè),因此這是個(gè)鏈接了動(dòng)態(tài)庫(kù)的exe

因此得到結(jié)論:當(dāng)一個(gè)靜態(tài)庫(kù)和一個(gè)動(dòng)態(tài)庫(kù)重名,并且位于同一文件夾下,編譯器優(yōu)先鏈接后綴.a的庫(kù)

2.-static參數(shù)有什么用

之前一直以為,加了-static就是靜態(tài)鏈接,做出來(lái)的exe一定就是那種完全可以移植的,但是經(jīng)過(guò)測(cè)試以后我發(fā)現(xiàn)我大錯(cuò)特錯(cuò)
首先把libadd.a和libadd.dll放回原位
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
然后輸入以下命令:

gcc -static main.c -I ./ -L ./ -ladd -o normal_two_implicit_static

得到:
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
文件大小為64KB,這說(shuō)明不出所料地,編譯器優(yōu)先鏈接了靜態(tài)庫(kù),這和-static關(guān)鍵字很搭,接下來(lái)把libadd.dll暫時(shí)移走,只留下libadd.a,輸入以下命令

gcc -static main.c -I ./ -L ./ -ladd -o normal_a_implicit_static

得到
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
64KB,鏈接了靜態(tài)庫(kù),依然在意料之中
這次移走libadd.a,只留下libadd.dll,然后輸入以下命令

gcc -static main.c -I ./ -L ./ -ladd -o normal_dll_implicit_static

錯(cuò)誤出現(xiàn)了:
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
錯(cuò)誤信息為并沒(méi)有找到庫(kù)文件!這和我們的預(yù)設(shè)也一致,因?yàn)?static禁用了動(dòng)態(tài)庫(kù),所以不再能找得到動(dòng)態(tài)庫(kù)dll
測(cè)試至此本可以結(jié)束,但是這里仍然存在一個(gè)疑問(wèn):我們到目前為止還沒(méi)有通過(guò)顯式的指出文件名來(lái)鏈接庫(kù),因?yàn)槠浣Y(jié)果似乎不用想都可以知道,那就是給出什么文件名就鏈接哪個(gè)文件,不可能出現(xiàn)重名的情況,這當(dāng)然是對(duì)的,但是在-static關(guān)鍵字的加持下,似乎在另一個(gè)角度出現(xiàn)了有意思的現(xiàn)象
再一次把文件歸位在一起
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
鍵入如下命令:

gcc -static main.c -I ./ -L ./ libadd.a -o normal_a_explicit_static

得到文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
沒(méi)有問(wèn)題
然后鍵入如下命令

gcc -static main.c -I ./ -L ./ libadd.dll -o normal_dll_explicit_static

根據(jù)之前的經(jīng)驗(yàn),我猜測(cè):由于-static禁用了動(dòng)態(tài)庫(kù)鏈接的選項(xiàng),那么這條命令應(yīng)該也會(huì)失敗并報(bào)錯(cuò),但是奇怪的事情發(fā)生了,命令正常運(yùn)行并且得到了正常的動(dòng)態(tài)庫(kù)鏈接exe(因?yàn)樗拇笮?4KB)
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
至此我們得到了第二個(gè)十分有用的結(jié)論:-static并不禁用動(dòng)態(tài)鏈接,它只是禁用了采用隱式指明庫(kù)名法(即以-l格式指明庫(kù)名)時(shí)動(dòng)態(tài)鏈接的選項(xiàng),如果你愿意的話完全可以在有-static的情況下輸入完整的動(dòng)態(tài)庫(kù)dll的全稱(chēng)來(lái)進(jìn)行動(dòng)態(tài)鏈接

3.編譯器靠什么識(shí)別一個(gè)庫(kù)時(shí)靜態(tài)庫(kù)還是動(dòng)態(tài)庫(kù)(后綴還是二進(jìn)制內(nèi)容)

這個(gè)疑問(wèn)乍看起來(lái)有些多次一舉:后綴為.a的就是靜態(tài)庫(kù),后綴為.dll的就是動(dòng)態(tài)庫(kù)呀。
但是事實(shí)真的如此嗎?我們完全可以通過(guò)修改后綴名而保持它們的二進(jìn)制數(shù)據(jù)并不變化,修改以后真正的靜態(tài)庫(kù)后綴為.dll,而真正的動(dòng)態(tài)庫(kù)后綴為.a,。在這種情況下如果將.a鏈接進(jìn)去,編譯器會(huì)辨別出它實(shí)際上是個(gè)披著靜態(tài)庫(kù)外皮的動(dòng)態(tài)庫(kù)呢,還是會(huì)傻傻地將其當(dāng)做靜態(tài)庫(kù)打包進(jìn)exe?于是有了下面的測(cè)試:
修改后綴名的過(guò)程略去
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
經(jīng)過(guò)修改后綴名,現(xiàn)在這里的.a才是真正的動(dòng)態(tài)庫(kù),而.dll才是真正的靜態(tài)庫(kù)
鍵入以下命令:

gcc main.c -I ./ -L ./ -ladd -o unnormal_two_implicit

得到文件
mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))
文件只有54KB,這說(shuō)明它實(shí)際上鏈接了動(dòng)態(tài)庫(kù),也即現(xiàn)在的.a庫(kù),這與我們測(cè)試1中的結(jié)論也相同,即:當(dāng)同名庫(kù)同時(shí)存在時(shí),隱式指明庫(kù)名會(huì)默認(rèn)優(yōu)先鏈接.a庫(kù)(這也是為什么前面不說(shuō)優(yōu)先鏈接靜態(tài)庫(kù)的原因,因?yàn)?a不一定是靜態(tài)庫(kù),在本例中它是一個(gè)披著靜態(tài)庫(kù)后綴的動(dòng)態(tài)庫(kù))
于是得到有用的第三條結(jié)論:編譯器靠二進(jìn)制內(nèi)容識(shí)別靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),而不會(huì)被其后綴名所迷惑

三、結(jié)論

1.當(dāng)一個(gè)靜態(tài)庫(kù)和一個(gè)動(dòng)態(tài)庫(kù)重名,并且位于同一文件夾下,編譯器優(yōu)先鏈接后綴.a的庫(kù)
2.-static并不禁用動(dòng)態(tài)鏈接,它只是禁用了采用隱式指明庫(kù)名法(即以-l格式指明庫(kù)名)時(shí)動(dòng)態(tài)鏈接的選項(xiàng),如果你愿意的話完全可以在有-static的情況下輸入完整的動(dòng)態(tài)庫(kù)dll的全稱(chēng)來(lái)進(jìn)行動(dòng)態(tài)鏈接
3.編譯器靠二進(jìn)制內(nèi)容識(shí)別靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),而不會(huì)被其后綴名所迷惑

下面以編程人員的角度,根據(jù)以上三條結(jié)論再導(dǎo)出出幾條實(shí)用結(jié)論:

Q:當(dāng)需要把一個(gè)dll鏈接進(jìn)程序的時(shí)候該怎么做?
A:在不確定是否有重名庫(kù)的情況下,建議直接在編譯參數(shù)中顯式給出庫(kù)名的全稱(chēng),如果確定沒(méi)有重名靜態(tài)庫(kù)的話,可以考慮使用-l的參數(shù)指出dll的名稱(chēng)

Q:當(dāng)需要進(jìn)行靜態(tài)編譯,即把所有庫(kù)打包放進(jìn)exe以保證其良好的不受環(huán)境依賴(lài)性的時(shí)候該怎么做?
A:只加一條-static并不會(huì)完事大吉,建議仔細(xì)檢查給出的庫(kù)中不包含動(dòng)態(tài)庫(kù),然后加上-static參數(shù)作為最終檢查

Q:我要開(kāi)發(fā)一個(gè)程序,程序運(yùn)行時(shí)需要調(diào)用一些第三方動(dòng)態(tài)庫(kù)如opencvworld455.dll,但是我又希望我編譯出的exe可以單獨(dú)發(fā)布出去讓其他人運(yùn)行,可以做到把opencvworld455.dll靜態(tài)鏈接到exe中嗎?
A:不能這么做,動(dòng)態(tài)庫(kù)無(wú)法靜態(tài)鏈接,這是庫(kù)的二進(jìn)制內(nèi)容差異決定的,要發(fā)布依賴(lài)第三方dll的可執(zhí)行文件exe,必須同時(shí)打包發(fā)布其依賴(lài)的第三方dll(有些商業(yè)軟件為了保證在一些連基本dll環(huán)境如msvcr.dll都沒(méi)有的機(jī)器上運(yùn)行,甚至?xí)⑷縟ll和exe一起打包發(fā)布)

四、注

1.本文省略了一些與主題相關(guān)性不高的測(cè)試過(guò)程,比如測(cè)試第一個(gè)問(wèn)題,重名問(wèn)題時(shí),并沒(méi)有給出顯式指明庫(kù)名的結(jié)果,以及第三個(gè)問(wèn)題,編譯器靠什么識(shí)別一個(gè)庫(kù)時(shí)靜態(tài)庫(kù)還是動(dòng)態(tài)庫(kù)問(wèn)題中,也沒(méi)有給出加上-static之后的測(cè)試結(jié)果,另外僅憑文件大小就判斷鏈接了靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)未免有些草率,這些問(wèn)題都從某種程度上顯得測(cè)試的邏輯性不夠嚴(yán)密。但實(shí)際上筆者幾乎做了一切可以想到的測(cè)試,并且通過(guò)移走dll再運(yùn)行exe發(fā)現(xiàn)不能運(yùn)行才判斷其為動(dòng)態(tài)鏈接產(chǎn)物,發(fā)現(xiàn)能運(yùn)行才判斷其為靜態(tài)鏈接產(chǎn)物,這些測(cè)試結(jié)果由于結(jié)果顯而易見(jiàn)和篇幅限制(懶)的緣故在文章中沒(méi)有給出,感興趣的讀者可以自己試試
2.本文測(cè)試的平臺(tái)為mingw64+windows10,結(jié)論并不一定適用于其他平臺(tái)
3.如有錯(cuò)誤,歡迎指正文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-448582.html

到了這里,關(guān)于mingw64下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)鏈接的真正區(qū)別和用法(詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux操作命令&靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)區(qū)別&大小端&孤兒僵尸進(jìn)程

    cd:切換當(dāng)前目錄 ls:查看當(dāng)前文件與目錄 grep:通常與管道符命令一起使用,用于對(duì)一些命令的輸出進(jìn)行篩選和加工 cp:復(fù)制文件或文件夾 mv:移動(dòng)文件或文件夾 rm:刪除文件或文件夾 ps:查看進(jìn)程情況 kill:向進(jìn)程發(fā)送信號(hào) tar:對(duì)文件進(jìn)行打包 cat:查看文件內(nèi)容 top:查看

    2024年02月16日
    瀏覽(21)
  • 詳解Linux下靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù)的生成和使用(含代碼示例和操作流程)&&動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的區(qū)別

    詳解Linux下靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù)的生成和使用(含代碼示例和操作流程)&&動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的區(qū)別

    關(guān)于gcc的使用方法可以參考下方鏈接博客: Linux下詳解gcc編譯過(guò)程(含代碼示例) gcc使用教程 庫(kù)是一種組件技術(shù)。 庫(kù)里封裝了數(shù)據(jù)和函數(shù),提供給用戶程序調(diào)用。 庫(kù)只執(zhí)行到第三階段編譯,沒(méi)有鏈接。 庫(kù)的使用可以使程序模塊化,提高程序的編譯速度,實(shí)現(xiàn)代碼復(fù)用。

    2024年02月15日
    瀏覽(33)
  • 動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

    動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

    1. 靜態(tài)庫(kù)(.a):程序在編譯鏈接的時(shí)候把庫(kù)的代碼鏈接到可執(zhí)行文件中。程序運(yùn)行的時(shí)候?qū)⒉辉傩枰o態(tài)庫(kù)。 2. 動(dòng)態(tài)庫(kù)(.so):程序在運(yùn)行的時(shí)候才去鏈接動(dòng)態(tài)庫(kù)的代碼,多個(gè)程序共享使用庫(kù)的代碼。 3. 一個(gè)與動(dòng)態(tài)庫(kù)鏈接的可執(zhí)行文件僅僅包含它用到的函數(shù)入口地址的一個(gè)

    2024年02月09日
    瀏覽(18)
  • 制作靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

    制作靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

    目錄 制作靜態(tài)庫(kù) ar命令 使用makefile制作靜態(tài)庫(kù) 如何發(fā)布自己的靜態(tài)庫(kù)給別人呢? 如何使用靜態(tài)庫(kù)呢? 方法一 方法二 制作動(dòng)態(tài)庫(kù) 使用動(dòng)態(tài)庫(kù)遇到的問(wèn)題 上面的問(wèn)題如何解決呢?(如何使用動(dòng)態(tài)庫(kù)) 1.方法一 2.方法二 3.方法三 4.方法四 搜索優(yōu)先級(jí) Linux默認(rèn)頭文件的搜索順序

    2024年02月03日
    瀏覽(22)
  • 【軟件教程】MingW-W64-builds不同版本之間的區(qū)別

    【軟件教程】MingW-W64-builds不同版本之間的區(qū)別

    https://github.com/niXman/mingw-builds-binaries/releases i686和x86_64的區(qū)別 i686和x86_64分別是32位和64位的CPU指令集。i686是x86家族線的一部分,而x86_64也被稱(chēng)為amd64。在處理大型數(shù)據(jù)庫(kù)等需要在同一進(jìn)程中使用大量?jī)?nèi)存的工作負(fù)載時(shí),64位版本將更好地?cái)U(kuò)展內(nèi)存。 posix和win32的區(qū)別 POSIX是一種

    2024年02月12日
    瀏覽(28)
  • 【Linux】動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

    【Linux】動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

    軟鏈接 命令: ln -s 源文件名 目標(biāo)文件名 軟鏈接是獨(dú)立連接文件的,他有自己的inode number,有自己的inode屬性和內(nèi)容。 軟鏈接內(nèi)部存放的是自己所指向文件的路徑。 現(xiàn)實(shí)中,我們軟鏈接的應(yīng)用有,例如電腦桌面的快捷模式等。 inode number 不相同 硬鏈接 命令: ln 源文件目標(biāo)文件

    2024年02月11日
    瀏覽(26)
  • Linux之靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

    Linux之靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

    目錄 一、前言 二、對(duì)于庫(kù)的理解 三、靜態(tài)庫(kù) 四、動(dòng)態(tài)庫(kù) 五、動(dòng)靜態(tài)庫(kù)的加載 在之前,我們講了靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),詳情請(qǐng)?zhí)D(zhuǎn):靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù) 下面我們將從工程師的角度,去了解靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的形成過(guò)程,以及實(shí)現(xiàn)它們的制作。并且了解如何將自己的庫(kù)交給別人,讓別

    2024年01月20日
    瀏覽(20)
  • 動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的使用

    動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的使用

    庫(kù)是一種可執(zhí)行代碼的二進(jìn)制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。就是將源代碼轉(zhuǎn)化為二進(jìn)制格式的源代碼,相當(dāng)于進(jìn)行了加密,別人可以使用庫(kù),但是看不到庫(kù)中的內(nèi)容。 常見(jiàn)的庫(kù)類(lèi)型 共享庫(kù) 靜態(tài)庫(kù) 動(dòng)態(tài)庫(kù) win32平臺(tái)下,靜態(tài)庫(kù)通常后綴為.lib,動(dòng)態(tài)庫(kù)為.dll 。 linux平臺(tái)下

    2024年02月03日
    瀏覽(14)
  • [靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)][VS2022]

    [靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)][VS2022]

    我們寫(xiě)代碼,可以分模塊去寫(xiě),最后可以協(xié)作,能整合起來(lái); 可以吧代碼的實(shí)現(xiàn)和聲明分離。 比如:我的這篇博客C語(yǔ)言猜拳小游戲就用到了模塊化編程 什么是庫(kù): 庫(kù)是寫(xiě)好的現(xiàn)有的,成熟的,可以復(fù)用的代碼?,F(xiàn)實(shí)中每個(gè)程序都要依賴(lài)很多基礎(chǔ)的底層庫(kù)本質(zhì)上來(lái)說(shuō)庫(kù)是一

    2024年02月15日
    瀏覽(16)
  • C語(yǔ)言 靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)生成

    使用ar命令 ar命令用于創(chuàng)建和管理靜態(tài)庫(kù)。下面是使用ar命令生成靜態(tài)庫(kù)的步驟: ./main: error while loading shared libraries: libcalc.so: cannot open shared object file: No such file or directory 執(zhí)行直接報(bào)錯(cuò)了,說(shuō)明系統(tǒng)沒(méi)有找到庫(kù)位置 而動(dòng)態(tài)庫(kù)的搜索路徑搜索的先后順序是: 1.編譯目標(biāo)代碼時(shí)指

    2024年02月08日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包