在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

Prelink的交叉編譯和使用詳解

如意 ? 來源:CSDN ? 作者:CaspianSea ? 2020-06-20 12:03 ? 次閱讀

How to prelink?

1. Prelink 的交叉編譯

1.1 獲取源碼

原版的 prelink 不適用于嵌入式平臺(tái);需要使用 Yocto Project 下的 prelink-cross 版本:

也可以通過 git 獲取最新的源碼:

$ git clone https://git.yoctoproject.org/git/prelink-cross

$ cd prelink-cross

$ git checkout 20151030_cross

注意,需要切換到 cross 分支。

1.2.交叉編譯

prelink 工具類似于 gcc 等工具鏈,如果處理的 ELF 文件所屬系統(tǒng)架構(gòu)不同于宿主系統(tǒng)架構(gòu)(也就是當(dāng)前的操作系統(tǒng)),則需要指定交叉編譯參數(shù)。例如,如果目標(biāo)軟件運(yùn)行的平臺(tái)為 arm,需要將 -target 參數(shù)指定為 arm-linux。

此外,還需要加上 –without-sysroot 參數(shù),使得我們編譯出來的 prelink 工具可以在運(yùn)行時(shí)指定 sysroot 路徑。

Prelink的交叉編譯和使用詳解

2. Prelink 的使用詳解

針對(duì)目標(biāo)程序 target_bin 的 prelink 過程如下:

Prelink的交叉編譯和使用詳解

對(duì)于上述 prelink 過程所用到的重要參數(shù)解釋如下:

–root 選項(xiàng)指定包含目標(biāo)程序和系統(tǒng)共享庫(kù)的 sysroot 路徑,也就是嵌入式系統(tǒng)的根目錄拷貝到宿主操作系統(tǒng)上的路徑;后續(xù)所有路徑都可指定為 sysroot 的相對(duì)路徑。上述操作中,–root 參數(shù)指定的目錄,其層級(jí)結(jié)構(gòu)應(yīng)與板子上根目錄層級(jí)結(jié)構(gòu)一致:

Prelink的交叉編譯和使用詳解

–cache-file 參數(shù)用于指定prelink 建立索引過程中的 cache 文件;

–config_file 參數(shù)用于指定 prelink 的配置文件,默認(rèn)為 /etc/prelink.conf 。里面是所有需要進(jìn)行 prelink 的 ELF 文件路徑;如果 prelink 后加 -a 選項(xiàng),則會(huì)處理此文件中所有的目錄或文件;

–ld-library-path 參數(shù)用于指定目標(biāo)可執(zhí)行文件運(yùn)行時(shí)的共享庫(kù)搜索路徑。由于我們需要從 target_bin 開始進(jìn)行 prelink,因此指定其運(yùn)行時(shí)的 LD_LIBRARY_PATH。

-h 和 -l 參數(shù)用于指定對(duì)目錄為目錄的軟連接的不同處理方式;加 -h 參數(shù)時(shí),會(huì)處理軟鏈接文件指向的目標(biāo)目錄;加 -l 參數(shù)時(shí),如果目標(biāo)目錄跨文件系統(tǒng),則會(huì)忽略。

-b 參數(shù)用于添加黑名單,所有用 –b 參數(shù)指定的目標(biāo)都不會(huì)處理。

-a 參數(shù)表示會(huì)處理配置文件中所有添加的路徑或文件。

-m 節(jié)省虛擬定址分配;如果有大量的共享庫(kù)需要 prelink 就會(huì)需要這個(gè)選項(xiàng)。

-R 參數(shù)會(huì)為共享庫(kù)選擇隨機(jī)的基址;這個(gè)是為安全考慮。

-f 強(qiáng)制重新 prelink 已經(jīng)做過 prelink 的 ELF 文件。prelink 默認(rèn)會(huì)忽略之前已經(jīng)被 prelink 的 ELF 文件。

-v 參數(shù)表示會(huì)輸出中間的詳細(xì)處理過程。

其他參數(shù)的解釋請(qǐng)參考 man 手冊(cè)。

單個(gè)可執(zhí)行文件的 prelink 處理時(shí)間在秒級(jí),如果對(duì)整個(gè)系統(tǒng)進(jìn)行 prelink,可能要花幾分鐘或者十幾分鐘。

這里需要注意,使用 prelink 處理多個(gè)可執(zhí)行文件時(shí),如果每個(gè)文件運(yùn)行時(shí)的動(dòng)態(tài)庫(kù)搜索路徑不同,建議通過指定 LD_LIBRARY_PATH 來分別處理,而非通過 -a 參數(shù)一次性處理,否則可能會(huì) prelink 錯(cuò)誤的共享庫(kù),導(dǎo)致運(yùn)行時(shí) prelink 機(jī)制并沒能發(fā)揮作用。

如果需要取消已經(jīng)做過 Prelink 的 ELF 文件的,也非常簡(jiǎn)單:

1$ prelink -au

警告:在對(duì)本機(jī)的 ELF 文件進(jìn)行 prelink 處理過程中,如果被強(qiáng)制中斷,可能會(huì)將整個(gè)系統(tǒng)弄崩掉。

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

    關(guān)注

    0

    文章

    2

    瀏覽量

    1664
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式開發(fā)中的交叉編譯詳解

    在嵌入式開發(fā)中,經(jīng)常會(huì)遇到目標(biāo)平臺(tái)資源貧乏,無法運(yùn)行需要的編譯器。亦或是目標(biāo)平臺(tái)上不允許或不能夠安裝需要的編譯器。這時(shí)候就需要使用交叉編譯了。
    的頭像 發(fā)表于 12-01 13:24 ?1779次閱讀
    嵌入式開發(fā)中的<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b><b class='flag-5'>詳解</b>

    什么是交叉編譯?為什么要交叉編譯

    什么是交叉編譯交叉編譯是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼(例如我們?cè)趙indows上用keil編譯代碼生成hex文件,供51單片機(jī)使
    發(fā)表于 01-13 06:04

    QT/E和Qtopia的編譯詳解

    首先說說編譯PC上的QT/E,我起初的時(shí)候不知道編譯PC上的QT/E編譯qpe和交叉編譯后的qpe有什么不同,
    發(fā)表于 05-10 10:53 ?2968次閱讀

    交叉編譯linux內(nèi)核(raspberry_3.6.y)

    一步一步教你交叉編譯linux內(nèi)核,RPI的內(nèi)核編譯教程,小眾的東西了
    發(fā)表于 11-03 17:58 ?0次下載

    交叉平臺(tái)開源編譯系統(tǒng)_cmake入門

    交叉平臺(tái)開源編譯系統(tǒng)_cmake入門
    發(fā)表于 01-22 13:59 ?9次下載

    嵌入式交叉編譯環(huán)境的搭建解析

    5.1.1 嵌入式交叉編譯環(huán)境的搭建 交叉編譯的概念在第4章中已經(jīng)詳細(xì)講述過,搭建交叉編譯環(huán)境是
    發(fā)表于 10-18 16:44 ?1次下載

    arm-linux的交叉編譯環(huán)境解析

    交叉編譯環(huán)境介紹 交叉編譯是嵌入式開發(fā)過程中的一項(xiàng)重要技術(shù),它的主要特征是某機(jī)器中執(zhí)行的程序代碼不是在本機(jī)編譯生成,而是由另一臺(tái)機(jī)器
    發(fā)表于 10-31 11:26 ?7次下載

    Xilinx交叉編譯鏈的安裝步驟和驗(yàn)證

    xilinx-arm-linux交叉編譯鏈最后一個(gè)版本就是2011版本,之后的xilinx不再單獨(dú)提供交叉編譯鏈了,如果需要最新的,請(qǐng)安裝SDK開發(fā)軟件,之后再安裝目錄中查找,或者so
    發(fā)表于 07-10 10:49 ?3347次閱讀

    ST微電子STM8的C交叉編譯用戶指南

    《STM8交叉編譯器用戶指南》是程序員為STM8微控制器環(huán)境編寫C程序的參考指南。它概述了交叉編譯器的工作原理,并解釋了如何編譯、組裝、鏈接
    發(fā)表于 06-04 08:00 ?12次下載
    ST微電子STM8的C<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>用戶指南

    一文了解Prelink的注意事項(xiàng)

    需要被 Prelink 的 ELF 文件,無論是共享庫(kù)還是可執(zhí)行文件,編譯時(shí)必須加 -fpic/-fPIC 參數(shù),生成目標(biāo)無關(guān)地址代碼。對(duì)于可執(zhí)行文件,不能使用 -fpie/-fPIE 加 –pie 生成地址無關(guān)可執(zhí)行文件,否則無法被
    的頭像 發(fā)表于 06-22 08:31 ?4191次閱讀
    一文了解<b class='flag-5'>Prelink</b>的注意事項(xiàng)

    交叉編譯器安裝教程

    交叉編譯器中“交叉”的意思就是在一個(gè)架構(gòu)上編譯另外一個(gè)架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來了。Ubuntu 自帶的 gcc
    的頭像 發(fā)表于 09-29 09:12 ?3946次閱讀

    QT如何配置交叉編譯工具?

    交叉編譯工具安裝 (glibc版本需要和開發(fā)板上的版本相兼容)
    的頭像 發(fā)表于 10-28 09:31 ?3936次閱讀

    Go工程化-交叉編譯概述

    交叉編譯,也稱跨平臺(tái)編譯,就是在一個(gè)平臺(tái)上編譯源代碼,生成結(jié)果為另一個(gè)平臺(tái)上的可執(zhí)行代碼。
    的頭像 發(fā)表于 05-22 17:15 ?916次閱讀

    Linux交叉編譯選項(xiàng)與源碼與目標(biāo)文件分離

    交叉編譯選項(xiàng) 編譯Linux,通常只需要運(yùn)行 make menuconfig 配置要編譯的模塊,然后運(yùn)行 make 。Linux默認(rèn)是做本地編譯
    的頭像 發(fā)表于 09-27 11:48 ?1151次閱讀

    QT開發(fā)學(xué)習(xí)筆記1(安裝交叉編譯器)

    QT安裝交叉編譯
    的頭像 發(fā)表于 02-18 10:02 ?1519次閱讀
    QT開發(fā)學(xué)習(xí)筆記1(安裝<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>器)
    主站蜘蛛池模板: 天天干天天爽天天射 | 免费在线播放毛片 | 午夜视频在线观看国产 | 一区二区三区国模大胆 | 丁香花五月婷婷 | 婷婷久久久五月综合色 | 精品国内视频 | 中文免费观看视频网站 | 女人张腿让男桶免费视频观看 | xxx日本69hd | 伊人天伊人天天网综合视频 | 国产高清小视频 | 黄视频国产 | 欧美色婷婷 | 国产成视频 | 欧美在线bdsm调教一区 | 亚洲一区二区精品推荐 | 四虎在线精品免费高清在线 | 美女扒开尿口给男人看大全 | 日韩高清毛片 | 美国一级毛片片aa久久综合 | 天天夜夜骑 | 日本不卡毛片一二三四 | 西西人体大胆高清啪啪欧洲 | 韩国美女丝袜一区二区 | 国产一级做a爱免费视频 | 天天在线干 | 老师我好爽再深一点好大 | 美女性爽视频国产免费 | 久久婷婷色综合老司机 | 女人牲交一级毛片 | 欧美白人极品性喷潮 | 亚洲经典一区二区三区 | 日日噜噜噜夜夜爽爽狠狠视频 | 激情综合六月 | 亚洲男人天堂2020 | 欧美特黄一免在线观看 | 男人日女人视频免费看 | 亚州国产精品精华液 | 91夜夜操| 日本一区二区三区四区在线观看 |