日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linux下動(dòng)態(tài)連接庫(kù)與共享變量的使用(動(dòng)態(tài)連接庫(kù)linux共享變量)

Linux是一種自由和開(kāi)放源代碼的操作系統(tǒng),其內(nèi)核是由極富遠(yuǎn)見(jiàn)的Linux之父Linus Torvalds開(kāi)發(fā)的。Linux的普及使得它成為了服務(wù)器和嵌入式設(shè)備的首選系統(tǒng)。而Linux系統(tǒng)強(qiáng)大的可擴(kuò)展性也為開(kāi)發(fā)者提供了很多方便之處。其中,使用動(dòng)態(tài)連接庫(kù)和共享變量是Linux開(kāi)發(fā)中重要的部分。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計(jì),臨桂網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:臨桂等地區(qū)。臨桂做網(wǎng)站價(jià)格咨詢:18982081108

一、動(dòng)態(tài)連接庫(kù)

動(dòng)態(tài)連接庫(kù)也叫共享庫(kù),它是一種在程序運(yùn)行時(shí)被加載和鏈接的庫(kù),它可以和多個(gè)程序共享,有助于減小程序體積和重復(fù)代碼。Linux下的動(dòng)態(tài)連接庫(kù)有兩種后綴名:*.so和*.dynlib,其中*.so是Linux下最為常見(jiàn)的庫(kù)類型。

Linux系統(tǒng)下的動(dòng)態(tài)連接庫(kù)使用與靜態(tài)連接庫(kù)相似。動(dòng)態(tài)連接庫(kù)包含在一個(gè)為庫(kù)文件創(chuàng)建的目錄下,可以使用“l(fā)dd”命令來(lái)鏈接到一個(gè)應(yīng)用程序,在鏈接時(shí)指定庫(kù)路徑或設(shè)置環(huán)境變量“LD_LIBRARY_PATH”即可。具體的可以參考以下三個(gè)步驟:

1.編譯時(shí)加-l參數(shù)指定庫(kù)

$ gcc -o app app.c -l library

2.設(shè)置庫(kù)路徑

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib

3.使用ldd檢查庫(kù)的鏈接狀態(tài)

$ ldd app

二、共享變量

共享變量也叫共享內(nèi)存,是許多進(jìn)程可以訪問(wèn)和編輯的一塊內(nèi)存區(qū)域。共享內(nèi)存區(qū)域存在于特定的內(nèi)存地址空間中,每個(gè)進(jìn)程都可以通過(guò)使用mmap()系統(tǒng)調(diào)用映射共享內(nèi)存,以此來(lái)訪問(wèn)共享內(nèi)存中的數(shù)據(jù)。當(dāng)一個(gè)進(jìn)程對(duì)內(nèi)存進(jìn)行了修改,所有其他訪問(wèn)同一共享內(nèi)存的進(jìn)程將會(huì)看到這些修改。這項(xiàng)技術(shù)常常用于進(jìn)程間通信、數(shù)據(jù)共享以及提高程序的性能。

使用共享變量時(shí),可以在一個(gè)進(jìn)程創(chuàng)建共享內(nèi)存,然后將該內(nèi)存區(qū)域映射至另一進(jìn)程的地址空間中,并讓這兩個(gè)進(jìn)程共享該內(nèi)存區(qū)域。在Linux系統(tǒng)下,使用共享變量可分為如下三個(gè)步驟:

1.按照POSIX標(biāo)準(zhǔn)的shm_open()函數(shù)創(chuàng)建共享內(nèi)存區(qū)域

int fd = shm_open(“shm_name”, O_CREAT | O_RDWR, 0666);

if(fd == -1){

perror(“shm_open”);

return -1;

}

2.使用mmap()函數(shù)將內(nèi)存映射到進(jìn)程地址空間

char* addr = (char*)mmap(NULL, region_size, PROT_READ | PROT_WRITE,

MAP_SHARED, fd, 0);

if (addr == MAP_FLED){

perror(“mmap”);

return -1;

}

3.對(duì)共享內(nèi)存變量進(jìn)行操作

char* buffer;

memcpy(buffer, addr, strlen(addr));

本文對(duì)進(jìn)行了簡(jiǎn)單介紹,可以在某些特殊的場(chǎng)合下為L(zhǎng)inux開(kāi)發(fā)者提供方便。開(kāi)發(fā)人員可以利用這些技術(shù)來(lái)減小程序體積,優(yōu)化系統(tǒng)性能,實(shí)現(xiàn)多進(jìn)程之間的數(shù)據(jù)共享。希望本文能對(duì)大家有所幫助。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

matlab在linux下生成的動(dòng)態(tài)鏈接庫(kù)怎么用

動(dòng)態(tài)庫(kù)的生成

1>首先生成目標(biāo)文件,但是此時(shí)要加編譯器選項(xiàng)-fpic和鏈接器鬧嫌扮選項(xiàng)-shared,

gcc -fpic -c add.c

gcc -fpic -c sub.c

生成中間文件add.o和sub.o

2>其次生成動(dòng)態(tài)庫(kù)

gcc -shared –o libtiger.so add.o sub.o

生成動(dòng)態(tài)庫(kù)libtiger.so,libtiger.so就是我者梁們生成的目標(biāo)動(dòng)態(tài)庫(kù)。我們以后使用動(dòng)態(tài)庫(kù)和main.c程序生成可執(zhí)行程序

說(shuō)明:

以上兩部也可以合成一步搞定:

gcc -fpic -shared add.c sub.c -o libtiger.so

2.使用動(dòng)態(tài)鏈接庫(kù)

在編譯程序時(shí),使用動(dòng)態(tài)鏈接庫(kù)和靜態(tài)庫(kù)是一致的,使用”-l庫(kù)名”的方式,在生成可執(zhí)行文件的時(shí)候會(huì)鏈接庫(kù)文件。

1>使用命令:

gcc -o main main.c -L ./ -ltiger

2>-L指定動(dòng)態(tài)鏈接庫(kù)的路勁,-ldtiger鏈接庫(kù)函數(shù)tiger。-ltiger是動(dòng)態(tài)庫(kù)的調(diào)用規(guī)則。Linux系統(tǒng)下的動(dòng)態(tài)庫(kù)命名方式是lib*.so,而在鏈接時(shí)表示位-l*,*是自己命名的庫(kù)名。

3>但是程序會(huì)提示如下錯(cuò)誤

error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

這是因?yàn)槌绦蜻\(yùn)行時(shí)沒(méi)有找到動(dòng)態(tài)鏈接庫(kù)造成的。程序編譯時(shí)鏈接動(dòng)態(tài)庫(kù)和運(yùn)行時(shí)使用動(dòng)態(tài)鏈接庫(kù)的概念是不同的,在運(yùn)行時(shí),程序鏈接的動(dòng)態(tài)鏈接庫(kù)需要在系統(tǒng)目錄下才行。

4>使用以下方法可以解決此問(wèn)題

a. 在linux下最方便的解決方案是拷貝libtiger.so到絕對(duì)目錄 /lib 下液灶(但是,要是超級(jí)用戶才可以,因此要使用sudo哦,親)。就可以生成可執(zhí)行程序了

b.第二種方法是:將動(dòng)態(tài)鏈接庫(kù)的目錄放到程序搜索路徑中,可以將庫(kù)的路徑加到環(huán)境變量LD_LIBRARY_PATH中實(shí)現(xiàn):

export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

linux怎樣添加永久動(dòng)態(tài)庫(kù)環(huán)境變量

/etc/ld.so.conf文件里增加動(dòng)態(tài)庫(kù)所在的路徑

或者/etc/ld.so.conf.d下新建.conf文件,內(nèi)容為加動(dòng)態(tài)庫(kù)所在的路徑

動(dòng)態(tài)連接庫(kù) linux 共享變量的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于動(dòng)態(tài)連接庫(kù) linux 共享變量,Linux下動(dòng)態(tài)連接庫(kù)與共享變量的使用,matlab在linux下生成的動(dòng)態(tài)鏈接庫(kù)怎么用,linux怎樣添加永久動(dòng)態(tài)庫(kù)環(huán)境變量的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫(huà)冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。


網(wǎng)頁(yè)題目:Linux下動(dòng)態(tài)連接庫(kù)與共享變量的使用(動(dòng)態(tài)連接庫(kù)linux共享變量)
文章分享:http://www.dlmjj.cn/article/djosioo.html