risc-v架構(gòu)為啥能開源?
RISC-V架構(gòu)是開源的,因?yàn)樗捎瞄_源許可,所以其他開發(fā)者可以使用、修改和分發(fā)源代碼,從而有效地促進(jìn)其發(fā)展。
如何在linux平臺(tái)生成靜態(tài)鏈接庫與動(dòng)態(tài)鏈接庫?
動(dòng)態(tài)庫和靜態(tài)庫
在Win下,動(dòng)態(tài)庫以。dll和靜態(tài)庫以。lib。
在Linux下,動(dòng)態(tài)庫文件以。靜態(tài)庫以。a.
在Mac下,動(dòng)態(tài)庫以。dylib和靜態(tài)庫以。a.
動(dòng)態(tài)圖書館的利與弊
動(dòng)態(tài)函數(shù)庫在編譯時(shí)并沒有編譯成目標(biāo)代碼,只有在你的程序執(zhí)行相關(guān)函數(shù)時(shí)才會(huì)調(diào)用函數(shù)庫中對應(yīng)的函數(shù),所以動(dòng)態(tài)函數(shù)庫生成的可執(zhí)行文件比較小。因?yàn)楹瘮?shù)庫不是集成到你的程序中,而是在程序運(yùn)行時(shí)動(dòng)態(tài)應(yīng)用和調(diào)用的,所以程序的運(yùn)行環(huán)境中必須提供相應(yīng)的庫。動(dòng)態(tài)函數(shù)庫的改變不影響你的程序,升級動(dòng)態(tài)函數(shù)庫更方便。
當(dāng)一個(gè)程序在運(yùn)行時(shí)調(diào)用一個(gè)動(dòng)態(tài)鏈接庫函數(shù)時(shí),操作系統(tǒng)首先查看所有正在運(yùn)行的進(jìn)程,看是否有人加載了這個(gè)庫。有就直接用。如果沒有,它將被加載。這樣做的第一個(gè)好處是節(jié)省內(nèi)存空間。動(dòng)態(tài)調(diào)入意味著要等到需要的時(shí)候,而不是不管用不用都先放在內(nèi)存里。
如果我想升級一些軟件。如果升級位置在dll中,則軟件的其他部分不需要重新編譯鏈接。所以升級方便。
靜態(tài)庫的優(yōu)點(diǎn)和缺點(diǎn)
靜態(tài)函數(shù)庫編譯的文件比較大,因?yàn)檎麄€(gè)函數(shù)庫在編譯的時(shí)候會(huì)集成到目標(biāo)代碼中,它的優(yōu)勢很明顯,就是編譯的執(zhí)行程序不需要外部函數(shù)庫的支持,因?yàn)槭褂玫暮瘮?shù)都已經(jīng)編譯好了。當(dāng)然這也會(huì)是他的缺點(diǎn),因?yàn)槿绻愕撵o態(tài)鏈接函數(shù)庫發(fā)生了變化,那么你的程序就必須重新編譯。
代碼更加精簡,因?yàn)椴恍枰M(jìn)行版本檢查。
當(dāng)程序被分發(fā)時(shí),文件的數(shù)量很少,因?yàn)樗庆o態(tài)鏈接到源文件的。
僅編譯庫中使用的部分,而不是整個(gè)庫。
生成的二進(jìn)制文件會(huì)占用更多空間。
重復(fù)的庫可能出現(xiàn)在多個(gè)進(jìn)程中,浪費(fèi)內(nèi)存。
如果庫內(nèi)部更新,二進(jìn)制文件需要重新編譯。
Linu臺(tái)的靜態(tài)庫
靜態(tài)庫的生成
靜態(tài)庫的鏈接
Linu臺(tái)的動(dòng)態(tài)庫
動(dòng)態(tài)庫的生成
動(dòng)態(tài)庫的鏈接
Windows平臺(tái)的靜態(tài)庫
靜態(tài)庫/MT的生成使用編譯來創(chuàng)建多線程可執(zhí)行文件。生成靜態(tài)庫lib。
靜態(tài)庫的鏈接。使用鏈接庫在代碼開頭添加,第二行是鏈接庫中要調(diào)用的函數(shù):
2.把要調(diào)用的鏈接庫的lib放到項(xiàng)目源代碼中,進(jìn)行編譯。你不編譯時(shí)不需要?jiǎng)討B(tài)鏈接庫。在這里,將靜態(tài)部件庫編譯成Exe,但是動(dòng)態(tài)庫dll沒用。)
3.運(yùn)行前將dll放在exe目錄中。
Windows平臺(tái)的動(dòng)態(tài)庫
動(dòng)態(tài)庫/MD的生成使用編譯來創(chuàng)建多線程dll。生成動(dòng)態(tài)庫。
動(dòng)態(tài)庫的鏈接1,LoadLibrary(或者M(jìn)FC的AfxLoadLibrary),加載動(dòng)態(tài)庫。
,獲取要引入的函數(shù),將符號名或標(biāo)識號轉(zhuǎn)換成DLL的內(nèi)部地址。
(或MFC的AfxFreeLibrary),并釋放動(dòng)態(tài)鏈接庫。