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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文了解Prelink的注意事項

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

1.1. 地址無關代碼

需要被 Prelink 的 ELF 文件,無論是共享庫還是可執(zhí)行文件,編譯時必須加 -fpic/-fPIC 參數(shù),生成目標無關地址代碼。對于可執(zhí)行文件,不能使用 -fpie/-fPIE 加 –pie 生成地址無關可執(zhí)行文件,否則無法被 prelink。

一文了解Prelink的注意事項

這個結論是根據(jù)上述測試程序得出的,其中的詳細機理有待進一步研究。

1.2. 檢查Prelink 狀態(tài)

可以使用 readelf 和 objdump 工具來檢查一個 ELF 文件是否已經(jīng)被 prelink。例如:

注意觀察到 6~14 行,對比沒有被 prelink 之前的狀態(tài),INIT、FINI、STRTAB、SYMTAB 等 section 的地址已經(jīng)修改為運行時進程空間的虛擬內存地址。第 30 行,RELACOUNT 表示已經(jīng)預先進行重定位的符號的數(shù)量;第 31 行是 prelink 根據(jù) ELF 所直接依賴的共享庫計算的 MD5 值,該值用于判斷該 ELF 所以來的共享庫是否被修改過;從第 32 行可以看出該 ELF 已被加上 PRELINKED 標記和時間戳。

但是,并非所有被成功 prelink 的 ELF 文件都會加上 PRELINKED 的標記和時間戳。在用 prelink 處理完我們的SDK的后,發(fā)現(xiàn) target_bin 所有的依賴項都有 PRELINKED 標記,target_bin 自身并沒有此標記。但是通過測試其啟動速度,確有巨大的提升,證明 prelink 在 target_bin 上確實發(fā)揮了作用。

至于為什么沒有這個標記,暫時還沒有調查清楚,仍待進一步研究。

對于上述情況,通過 objdump 等工具查看ELF文件的 section header,我們仍然可以發(fā)現(xiàn) prelink 處理后留下的蛛絲馬跡。

Prelink 之前,查看 target_bin 的節(jié)頭:

Prelink 之后,再次查看節(jié)頭:

對比 prelink 前后的節(jié)頭信息,我們發(fā)現(xiàn) prelink 后每個節(jié)的地址都有了調整,增加了.gnu.liblist , .gnu.conflict 和 .gnu.prelink_undo 這三個節(jié)。同時 .dynstr 節(jié)的 size 由 0xa3cb1 增加到了 0xa3e8c。這些都是 prelink 之后 ELF 的 size 有所增大的原因。

1.3. 查看ELF依賴樹

Prelink 的處理過程是從目標 ELF 文件開始,檢查其依賴樹。從葉子節(jié)點開始處理,自底向上,直至根節(jié)點。若中間任何節(jié)點處理異常,則目標文件都無法被 prelink。同理,如果已經(jīng)被 prelink 處理的 ELF 文件,如果其依賴樹的中任何節(jié)點對應的 ELF 文件有更改,則需要從根開始重新 prelink。如果被更改的 ELF 所處的層級較低,被很多可執(zhí)行文件依賴,則可能整個系統(tǒng)的 ELF 都需要重新進行 Prelink 處理。

可以使用 lddtree 查看 ELF 文件的依賴樹。但是這個工具比較雞肋,只適用于處理本機的 ELF 文件,無法像 prelink 一樣可以在運行時指定 sysroot 和 LD_LIBRARY_PATH。

1.4. 不必要的依賴項

如果 prelink 在處理某個 ELF 文件(記為 A)的過程中,發(fā)現(xiàn) A 并沒有使用其直接依賴的另一個 ELF 文件(記為 B),而 A 又通過 C 間接依賴到 B,并且 B 已經(jīng)被 prelink 處理。此時,A 將無法被 prelink。

1.5. 動態(tài)加載的共享庫

Prelink 對于通過 dlopen 方式打開的共享庫沒有效果。

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

    關注

    0

    文章

    648

    瀏覽量

    32775
  • Prelink
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1618
收藏 人收藏

    評論

    相關推薦

    繞線電感定制的注意事項

    電子發(fā)燒友網(wǎng)站提供《繞線電感定制的注意事項.docx》資料免費下載
    發(fā)表于 09-20 11:24 ?0次下載

    共模電感定制的注意事項

    電子發(fā)燒友網(wǎng)站提供《共模電感定制的注意事項.docx》資料免費下載
    發(fā)表于 09-04 11:47 ?0次下載

    LiFePO4設計注意事項

    電子發(fā)燒友網(wǎng)站提供《LiFePO4設計注意事項.pdf》資料免費下載
    發(fā)表于 09-03 09:24 ?0次下載
    LiFePO4設計<b class='flag-5'>注意事項</b>

    鉗形電流表的使用方法和注意事項

    鉗形電流表,作為電氣測量和測試的重要工具,其使用方法和注意事項對于保障測量結果的準確性和操作人員的安全至關重要。本文將從鉗形電流表的使用方法和注意事項兩個方面進行詳細闡述,以期為讀者提供個全面而深入的
    的頭像 發(fā)表于 05-14 16:14 ?3043次閱讀

    FMD LINK 使用注意事項

    電子發(fā)燒友網(wǎng)站提供《FMD LINK 使用注意事項.pdf》資料免費下載
    發(fā)表于 05-06 10:11 ?0次下載

    浪涌抑制器的應用及注意事項

    浪涌抑制器的應用及注意事項?|深圳比創(chuàng)達電子
    的頭像 發(fā)表于 01-19 09:55 ?658次閱讀
    浪涌抑制器的應用及<b class='flag-5'>注意事項</b>?

    測速電機: 常見6大注意事項

    測速電機: 常見6大注意事項!測速電機是種用于測量物體運動速度的設備,廣泛應用于工業(yè)生產(chǎn)和科學研究中。測速電機常見的6大注意事項以確保安全和準確性。
    的頭像 發(fā)表于 01-11 10:53 ?417次閱讀
    測速電機: 常見6大<b class='flag-5'>注意事項</b>

    霍爾元件使用的注意事項

    霍爾元件使用的注意事項? 霍爾元件是種常見的電子元件,主要用于測量和檢測磁場的變化。它具有靈敏度高、響應速度快、耐磁場干擾等優(yōu)點,在各種應用中得到廣泛使用。然而,為了確?;魻栐恼9ぷ骱脱娱L其
    的頭像 發(fā)表于 12-18 14:56 ?1170次閱讀

    電流互感器的使用注意事項

    當談到電流互感器的使用時,有些重要的注意事項需要我們牢記。在本文中,我們將探討這些注意事項,為您提供詳細和全面的信息。
    的頭像 發(fā)表于 12-15 10:34 ?1312次閱讀
    電流互感器的使用<b class='flag-5'>注意事項</b>

    輕負載時開關元件工作相關的注意事項

    輕負載時開關元件工作相關的注意事項
    的頭像 發(fā)表于 12-14 15:43 ?410次閱讀
    輕負載時開關元件工作相關的<b class='flag-5'>注意事項</b>

    J-Link 中的JTAG 接口:正確使用需要了解注意事項,在這里!

    J-Link 中的JTAG 接口:正確使用需要了解注意事項,在這里!
    的頭像 發(fā)表于 12-01 16:01 ?1352次閱讀
    J-Link 中的JTAG 接口:正確使用需要<b class='flag-5'>了解</b>的<b class='flag-5'>注意事項</b>,在這里!

    伺服電機常見故障維修及注意事項

    伺服電機常見故障維修及注意事項
    的頭像 發(fā)表于 11-28 13:29 ?2070次閱讀

    半導體器件擊穿機理分析及設計注意事項

    半導體器件擊穿機理分析及設計注意事項
    的頭像 發(fā)表于 11-23 17:38 ?1510次閱讀
    半導體器件擊穿機理分析及設計<b class='flag-5'>注意事項</b>

    VGA OUT 的PCB設計注意事項

    VGA OUT 的PCB設計注意事項
    的頭像 發(fā)表于 11-23 09:04 ?779次閱讀

    數(shù)字可編程變頻電源使用有哪些注意事項?

    數(shù)字可編程變頻電源使用有哪些注意事項? 數(shù)字可編程變頻電源是種能夠根據(jù)用戶需求調整輸出電壓和頻率的電源設備。它在工業(yè)生產(chǎn)和實驗室研究等領域中被廣泛使用。然而,使用數(shù)字可編程變頻電源時需要注意
    的頭像 發(fā)表于 11-13 16:09 ?701次閱讀