在线观看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的交叉編譯和使用詳解

如意 ? 來(lái)源:CSDN ? 作者:CaspianSea ? 2020-06-20 12:03 ? 次閱讀

How to prelink?

1. Prelink 的交叉編譯

1.1 獲取源碼

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

也可以通過(guò) 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ù),使得我們編譯出來(lái)的 prelink 工具可以在運(yùn)行時(shí)指定 sysroot 路徑。

Prelink的交叉編譯和使用詳解

2. Prelink 的使用詳解

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

Prelink的交叉編譯和使用詳解

對(duì)于上述 prelink 過(guò)程所用到的重要參數(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 建立索引過(guò)程中的 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 開(kāi)始進(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)做過(guò) prelink 的 ELF 文件。prelink 默認(rèn)會(huì)忽略之前已經(jīng)被 prelink 的 ELF 文件。

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

其他參數(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ù)搜索路徑不同,建議通過(guò)指定 LD_LIBRARY_PATH 來(lái)分別處理,而非通過(guò) -a 參數(shù)一次性處理,否則可能會(huì) prelink 錯(cuò)誤的共享庫(kù),導(dǎo)致運(yùn)行時(shí) prelink 機(jī)制并沒(méi)能發(fā)揮作用。

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

1$ prelink -au

警告:在對(duì)本機(jī)的 ELF 文件進(jìn)行 prelink 處理過(guò)程中,如果被強(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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Prelink
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1648
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

    交叉編譯環(huán)境介紹 交叉編譯是嵌入式開(kāi)發(fā)過(guò)程中的一項(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開(kāi)發(fā)軟件,之后再安裝目錄中查找,或者so
    發(fā)表于 07-10 10:49 ?3286次閱讀

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

    交叉編譯器安裝教程

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

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

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

    Go工程化-交叉編譯概述

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

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

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

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

    QT安裝交叉編譯
    的頭像 發(fā)表于 02-18 10:02 ?1335次閱讀
    QT開(kāi)發(fā)學(xué)習(xí)筆記1(安裝<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>器)
    主站蜘蛛池模板: 日本韩国做暖暖小视频 | 色多多在线观看高清免费 | 久久久久激情免费观看 | 免费高清视频在线观看 | 天堂网在线最新版官网 | 午夜看片 | h版欧美一区二区三区四区 h网站亚洲 | 2017天天干夜夜操 | 国产精品色片 | 国产精品久久福利网站 | 四虎影业 | 美女扒开尿口给男人桶 | 激情五月视频 | 天堂资源8中文最新版在线 天堂资源地址在线 | yezhulu在线永久网址yellow | 我不卡老子影院午夜伦我不卡四虎 | 国产免费私拍一区二区三区 | 欧美成人免费全部观看天天性色 | 午夜黄色大片 | 永久福利盒子日韩日韩免费看 | 欧美极品另类xxx | 欧美精彩狠狠色丁香婷婷 | 伊人久久大香线蕉综合高清 | 四虎在线网址 | 亚洲邪恶天堂影院在线观看 | 在线免费看黄的网站 | 日本成人福利视频 | 三级网站国产 | 久久精品人人做人人看 | 亚洲第一香蕉视频 | 日韩一级片在线免费观看 | 欧美洲视频在线观看 | 人人干人人模 | 黑人干亚洲 | 日本a免费 | aaaa大片 | 激情五月在线 | 人人添人人澡人人澡人人人爽 | 看真人一一级毛片 | 欧美高清一级片 | 天天射夜夜操 |