日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
學(xué)習(xí)Linux下鏈接共享庫(kù)的原理與使用方法(linux鏈接共享庫(kù))

學(xué)習(xí)linux下鏈接共享庫(kù)的原理與使用方法

許多開(kāi)發(fā)者時(shí)常使用Linux下的動(dòng)態(tài)鏈接庫(kù)(dynamic linking library),又稱(chēng)共享庫(kù)(Shared Library),這種庫(kù)經(jīng)過(guò)編譯鏈接,可以被多個(gè)應(yīng)用程序同時(shí)使用,而不需要反復(fù)多次編譯鏈接,從而節(jié)省內(nèi)存空間和計(jì)算機(jī)時(shí)間。那么Linux下鏈接共享庫(kù)的原理又是什么呢?本文就Linux下鏈接共享庫(kù)的原理與使用方法進(jìn)行講解。

Linux下鏈接共享庫(kù)是利用惰性綁定(lazy binding)相關(guān)技術(shù)將被多個(gè)程序共同使用的代碼 or 數(shù)據(jù)模塊進(jìn)行一次編譯,共同生成共享庫(kù),而不是分別編譯成獨(dú)立的目標(biāo)文件,其原理如下:

1. 在編譯生成的可執(zhí)行程序中,通常會(huì)包含一些函數(shù)調(diào)用指令,但是該指令對(duì)應(yīng)的函數(shù)所在的位置并未確定;

2. 當(dāng)程序加載到內(nèi)存后,系統(tǒng)會(huì)根據(jù)動(dòng)態(tài)鏈接庫(kù)的記錄,自動(dòng)將共享庫(kù)加載進(jìn)內(nèi)存,而程序中的相應(yīng)函數(shù)調(diào)用就會(huì)替換成該函數(shù)在共享庫(kù)中的具體位置;

3. 如此,程序就可以正常調(diào)用共享庫(kù)中的函數(shù),從而實(shí)現(xiàn)了共享庫(kù)的鏈接過(guò)程。

Linux下鏈接共享庫(kù)的使用過(guò)程則主要步驟如下:

1. 首先,我們需要將要編譯的代碼文件編譯成共享文件,這可以通過(guò)GCC中的 -fPIC 參數(shù);

2. 然后,編譯器會(huì)將編譯后的目標(biāo)文件生成一個(gè)共享庫(kù)文件,形如libxxx.so;

3. 再則,將生成的共享庫(kù)文件拷貝至系統(tǒng)lib目錄或者指定的目錄,以便被調(diào)用;

4. 最后,通過(guò)-L參數(shù)將要連接的共享庫(kù)目錄指定由編譯器編譯生成可執(zhí)行程序至該目錄,而-l參數(shù)則表示將要調(diào)用的共享庫(kù);

以上就是Linux下鏈接共享庫(kù)的原理與使用方法,如果能正確使用,可以幫助開(kāi)發(fā)者節(jié)省大量開(kāi)發(fā)時(shí)間。以下是示例代碼:

#include

#include //sin_sample.h 中聲明了sin_sample功能

int main(int argc, char** argv)

{

float angle = 3.14f / 2.0f;

printf(“%f\n”,sin_sample(angle));

return 0;

}

// 編譯命令:gcc dynamic_library_example.c -L. -lsin_sample -o dynamic_library

// 運(yùn)行程序 ./dynamic_library

總結(jié)

綜上,Linux下鏈接共享庫(kù)的原理與使用方法是這樣的:共享庫(kù)依靠惰性綁定(lazy binding)技術(shù)將多個(gè)程序共同使用的代碼or數(shù)據(jù)模塊進(jìn)行一次編譯,而在程序加載到內(nèi)存后,入口函數(shù)調(diào)用將會(huì)指向共享庫(kù)中的函數(shù);使用共享庫(kù)的步驟是:將需要編譯文件編譯成共享文件,然后將生成的共享庫(kù)文件拷貝至系統(tǒng)lib目錄或者指定的目錄,最后將該目錄指定到編譯器。正確的使用共享庫(kù)就能達(dá)到節(jié)省計(jì)算時(shí)間的目的。

成都網(wǎng)站營(yíng)銷(xiāo)推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷(xiāo)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。


當(dāng)前文章:學(xué)習(xí)Linux下鏈接共享庫(kù)的原理與使用方法(linux鏈接共享庫(kù))
文章位置:http://m.5511xx.com/article/dppjghi.html