卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

ios軟件分發(fā)源碼搭建教程手把手 risc-v架構(gòu)為啥能開源?

risc-v架構(gòu)為啥能開源?RISC-V架構(gòu)是開源的,因為它采用開源許可,所以其他開發(fā)者可以使用、修改和分發(fā)源代碼,從而有效地促進(jìn)其發(fā)展。如何在linux平臺生成靜態(tài)鏈接庫與動態(tài)鏈接庫?動態(tài)庫和靜態(tài)庫

risc-v架構(gòu)為啥能開源?

RISC-V架構(gòu)是開源的,因為它采用開源許可,所以其他開發(fā)者可以使用、修改和分發(fā)源代碼,從而有效地促進(jìn)其發(fā)展。

如何在linux平臺生成靜態(tài)鏈接庫與動態(tài)鏈接庫?

動態(tài)庫和靜態(tài)庫

在Win下,動態(tài)庫以。dll和靜態(tài)庫以。lib。

在Linux下,動態(tài)庫文件以。靜態(tài)庫以。a.

在Mac下,動態(tài)庫以。dylib和靜態(tài)庫以。a.

動態(tài)圖書館的利與弊

動態(tài)函數(shù)庫在編譯時并沒有編譯成目標(biāo)代碼,只有在你的程序執(zhí)行相關(guān)函數(shù)時才會調(diào)用函數(shù)庫中對應(yīng)的函數(shù),所以動態(tài)函數(shù)庫生成的可執(zhí)行文件比較小。因為函數(shù)庫不是集成到你的程序中,而是在程序運行時動態(tài)應(yīng)用和調(diào)用的,所以程序的運行環(huán)境中必須提供相應(yīng)的庫。動態(tài)函數(shù)庫的改變不影響你的程序,升級動態(tài)函數(shù)庫更方便。

當(dāng)一個程序在運行時調(diào)用一個動態(tài)鏈接庫函數(shù)時,操作系統(tǒng)首先查看所有正在運行的進(jìn)程,看是否有人加載了這個庫。有就直接用。如果沒有,它將被加載。這樣做的第一個好處是節(jié)省內(nèi)存空間。動態(tài)調(diào)入意味著要等到需要的時候,而不是不管用不用都先放在內(nèi)存里。

如果我想升級一些軟件。如果升級位置在dll中,則軟件的其他部分不需要重新編譯鏈接。所以升級方便。

靜態(tài)庫的優(yōu)點和缺點

靜態(tài)函數(shù)庫編譯的文件比較大,因為整個函數(shù)庫在編譯的時候會集成到目標(biāo)代碼中,它的優(yōu)勢很明顯,就是編譯的執(zhí)行程序不需要外部函數(shù)庫的支持,因為使用的函數(shù)都已經(jīng)編譯好了。當(dāng)然這也會是他的缺點,因為如果你的靜態(tài)鏈接函數(shù)庫發(fā)生了變化,那么你的程序就必須重新編譯。

代碼更加精簡,因為不需要進(jìn)行版本檢查。

當(dāng)程序被分發(fā)時,文件的數(shù)量很少,因為它是靜態(tài)鏈接到源文件的。

僅編譯庫中使用的部分,而不是整個庫。

生成的二進(jìn)制文件會占用更多空間。

重復(fù)的庫可能出現(xiàn)在多個進(jìn)程中,浪費內(nèi)存。

如果庫內(nèi)部更新,二進(jìn)制文件需要重新編譯。

Linu臺的靜態(tài)庫

靜態(tài)庫的生成

靜態(tài)庫的鏈接

Linu臺的動態(tài)庫

動態(tài)庫的生成

動態(tài)庫的鏈接

Windows平臺的靜態(tài)庫

靜態(tài)庫/MT的生成使用編譯來創(chuàng)建多線程可執(zhí)行文件。生成靜態(tài)庫lib。

靜態(tài)庫的鏈接。使用鏈接庫在代碼開頭添加,第二行是鏈接庫中要調(diào)用的函數(shù):

2.把要調(diào)用的鏈接庫的lib放到項目源代碼中,進(jìn)行編譯。你不 編譯時不需要動態(tài)鏈接庫。在這里,將靜態(tài)部件庫編譯成Exe,但是動態(tài)庫dll沒用。)

3.運行前將dll放在exe目錄中。

Windows平臺的動態(tài)庫

動態(tài)庫/MD的生成使用編譯來創(chuàng)建多線程dll。生成動態(tài)庫。

動態(tài)庫的鏈接1,LoadLibrary(或者M(jìn)FC的AfxLoadLibrary),加載動態(tài)庫。

,獲取要引入的函數(shù),將符號名或標(biāo)識號轉(zhuǎn)換成DLL的內(nèi)部地址。

(或MFC的AfxFreeLibrary),并釋放動態(tài)鏈接庫。