0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛擬機(jī):GCC共享庫在連接時(shí)的搜索位置和優(yōu)選次序

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-22 15:42 ? 次閱讀

假設(shè)有兩個(gè)相同的共享庫,一個(gè)在標(biāo)準(zhǔn)的共享庫搜索目錄(/lib/i386-linux-gnu), 一個(gè)在非標(biāo)準(zhǔn)目錄(/home/charles/tmp):

虛擬機(jī):GCC共享庫在連接時(shí)的搜索位置和優(yōu)選次序

在/home/charles/tmp下有個(gè)測試程序main.c,調(diào)用共享庫里的函數(shù)。

用如下的命令編譯:

用ldd看一下link的共享庫:

虛擬機(jī):GCC共享庫在連接時(shí)的搜索位置和優(yōu)選次序

可以看出,雖然我們指定了要使用 /home/charles/tmp下的庫,但實(shí)際上用的還是標(biāo)準(zhǔn)搜索路徑下的庫。

換句話說,GNU ld 優(yōu)選搜索標(biāo)準(zhǔn)路徑下的文件,然后才是 -L指定的

現(xiàn)在執(zhí)行

export LD_LIBRARY_PATH=/home/charles/tmp

虛擬機(jī):GCC共享庫在連接時(shí)的搜索位置和優(yōu)選次序

可見,LD_LIBRARY_PATH指定的路徑優(yōu)選于系統(tǒng)標(biāo)準(zhǔn)目錄。

最后嘗試一下如下的方法:

gcc main.c -wl,-rpath,/home/charles/tmp -g -o main -lshared

或者:

gcc main.c -Wl,-rpath /home/charles/tmp -g -o main -lshared

虛擬機(jī):GCC共享庫在連接時(shí)的搜索位置和優(yōu)選次序

最后,總結(jié)一下,共享庫的搜索順序(按照優(yōu)先次序):

1) LD_LIBRARY_PATH指定的目錄

2) rpath指定的路徑。

rpath指定的路徑同時(shí)被寫進(jìn)了二進(jìn)制文件里面。

p$ readelf -d main | grep rpath

0x0000000f (RPATH) Library rpath: [/home/charles/tmp]

3)系統(tǒng)標(biāo)準(zhǔn)路徑

這包括/lib, /usr/lib, /usr/local/lib以及在/etc/ld.conf 里面指定的路徑。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • GCC
    GCC
    +關(guān)注

    關(guān)注

    0

    文章

    107

    瀏覽量

    24857
  • 搜索
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    16668
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    919

    瀏覽量

    28315
收藏 人收藏

    評論

    相關(guān)推薦

    什么是虛擬機(jī)?虛擬機(jī)真的那么好用嗎?

    日新月異的科技世界中,虛擬化技術(shù)如同一座橋梁,連接著現(xiàn)實(shí)與數(shù)字的鴻溝,為我們打開了全新的計(jì)算維度。虛擬機(jī),這一概念,自其誕生以來,就以其獨(dú)特的魅力和強(qiáng)大的功能,深深地影響了軟件開發(fā)、
    的頭像 發(fā)表于 07-06 08:05 ?463次閱讀
    什么是<b class='flag-5'>虛擬機(jī)</b>?<b class='flag-5'>虛擬機(jī)</b>真的那么好用嗎?

    創(chuàng)建ubuntu虛擬機(jī)

    的存在形式,然后點(diǎn)擊“下一步”完成。指定磁盤文件,這里默認(rèn)即可。默認(rèn)點(diǎn)擊“完成”即可。至此,虛擬機(jī)創(chuàng)建完成。下一小節(jié)中我們介紹Ubuntu系統(tǒng)虛擬機(jī)中的安裝,其
    發(fā)表于 08-10 14:15

    開發(fā)板如何通過虛擬機(jī)文件共享功能,運(yùn)行虛擬機(jī)上linux下的程序

    開發(fā)板如何通過虛擬機(jī)文件共享功能,運(yùn)行虛擬機(jī)上linux下的程序
    發(fā)表于 03-20 23:44

    VMware虛擬機(jī)與主機(jī)共享文件的方法

    首先,確保虛擬機(jī)已經(jīng)安裝VMware Tools。第一步,主機(jī)新建固定共享文件夾,例如D:/Share。第二步,打開虛擬機(jī),點(diǎn)擊“編輯虛擬機(jī)
    發(fā)表于 07-03 05:44

    VMware虛擬機(jī)與主機(jī)共享文件的方法步驟

    首先,確保虛擬機(jī)已經(jīng)安裝VMware Tools。第一步,主機(jī)新建固定共享文件夾,例如D:/Share。第二步,打開虛擬機(jī),點(diǎn)擊“編輯虛擬機(jī)
    發(fā)表于 07-09 02:37

    虛擬機(jī)和主機(jī)共享文件失敗的原因與解決

    CentOS虛擬機(jī)和主機(jī)共享文件失敗的解決辦法
    發(fā)表于 03-25 10:01

    請問如何安裝虛擬機(jī)共享文件?

    1、如何安裝虛擬機(jī)共享文件?安裝虛擬機(jī)共享文件除了有此作用外,還有其他什么用途呢?
    發(fā)表于 07-04 05:56

    如何創(chuàng)建虛擬機(jī)?

    實(shí)戰(zhàn)開發(fā)--開發(fā)環(huán)境安裝(五)1、下載軟件vmware和ubuntu-20.04.1-desktop-amd64.iso2、創(chuàng)建虛擬機(jī)完整步驟3、安裝嵌入式linux所需的工具包4、安裝vmware tool,實(shí)現(xiàn)虛擬機(jī)與物理主機(jī)交換和拖拉文件功能,從而文件
    發(fā)表于 12-16 07:45

    VM2008R2中使用模板快速創(chuàng)建虛擬機(jī)

    模板的共享位置。由于此前在庫所在的分區(qū)目錄中創(chuàng)建了名為”Template”的文件夾,此處的“虛擬機(jī)路徑”選定這個(gè)文件夾路徑。8、 “摘要”頁,如果沒有需要更改的選項(xiàng),直接點(diǎn)擊“創(chuàng)建”
    發(fā)表于 10-24 16:58

    windows 與虛擬機(jī)共享設(shè)置手冊.pdf

    windows 與虛擬機(jī)共享設(shè)置手冊 現(xiàn)在使用虛擬機(jī)的人越來越多,它的確給我們帶來了很大的方便。但是其中總會有一些問題困擾著我們,今天我就給大家講一講我
    發(fā)表于 03-13 14:48 ?51次下載

    如何使用windows10遠(yuǎn)程連接虛擬機(jī)桌面

    本文介紹了如何使用 windows10 遠(yuǎn)程連接虛擬機(jī)桌面(已使用遠(yuǎn)程連接工具連接虛擬機(jī),如 xshell),親測可用,不懂的地方歡迎交流
    的頭像 發(fā)表于 07-12 11:18 ?2983次閱讀

    虛擬機(jī)ubuntu怎么聯(lián)網(wǎng)

    虛擬機(jī)ubuntu怎么聯(lián)網(wǎng)? 虛擬機(jī)(Virtual Machine)是運(yùn)行在物理機(jī)(Host Machine)上的虛擬操作系統(tǒng)環(huán)境。
    的頭像 發(fā)表于 12-27 16:51 ?1009次閱讀

    虛擬化數(shù)據(jù)恢復(fù)—虛擬機(jī)誤還原快照的數(shù)據(jù)恢復(fù)案例

    有一臺虛擬機(jī)是由物理機(jī)遷移到ESXI上面的,遷移完成后為該虛擬機(jī)做了一個(gè)快照。虛擬機(jī)上運(yùn)行了一個(gè)SQL Server數(shù)據(jù),記錄了5年左右的
    的頭像 發(fā)表于 05-11 11:07 ?584次閱讀

    服務(wù)器數(shù)據(jù)恢復(fù)—EMC Isilon存儲中虛擬機(jī)數(shù)據(jù)恢復(fù)案例

    服務(wù)器存儲數(shù)據(jù)恢復(fù)環(huán)境: EMC Isilon S200集群存儲,共三個(gè)節(jié)點(diǎn),每節(jié)點(diǎn)配置12塊SATA硬盤。 服務(wù)器存儲故障: 工作人員誤操作刪除虛擬機(jī),虛擬機(jī)中數(shù)據(jù)包括數(shù)據(jù)、MP4
    的頭像 發(fā)表于 06-13 13:38 ?414次閱讀
    服務(wù)器數(shù)據(jù)恢復(fù)—EMC Isilon存儲中<b class='flag-5'>虛擬機(jī)</b>數(shù)據(jù)恢復(fù)案例

    虛擬機(jī)數(shù)據(jù)恢復(fù)—KVM虛擬機(jī)被誤刪除的數(shù)據(jù)恢復(fù)案例

    虛擬機(jī)數(shù)據(jù)恢復(fù)環(huán)境: Linux操作系統(tǒng)服務(wù)器,EXT4文件系統(tǒng)。服務(wù)器中有數(shù)臺KVM虛擬機(jī)。 虛擬機(jī)1:主數(shù)據(jù)服務(wù)器 虛擬磁盤
    的頭像 發(fā)表于 08-07 13:33 ?491次閱讀
    <b class='flag-5'>虛擬機(jī)</b>數(shù)據(jù)恢復(fù)—KVM<b class='flag-5'>虛擬機(jī)</b>被誤刪除的數(shù)據(jù)恢復(fù)案例