哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    瀏覽量

    1732
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎ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 ?2515次閱讀
    嵌入式開(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 ?3284次閱讀

    交叉編譯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 ?3714次閱讀

    一文了解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 ?4569次閱讀
    一文了解<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 ?4909次閱讀

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

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

    Go工程化-交叉編譯概述

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

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

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

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

    QT安裝交叉編譯
    的頭像 發(fā)表于 02-18 10:02 ?2387次閱讀
    QT開(kāi)發(fā)學(xué)習(xí)筆記1(安裝<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>器)

    技術(shù)分享 | RK3506如何交叉編譯frp wireguard

    RK3506擁有著不錯(cuò)的性價(jià)比以及與之相匹配的性能優(yōu)勢(shì),非常適合用來(lái)做邊緣計(jì)算網(wǎng)關(guān)、小型數(shù)據(jù)收集端點(diǎn)等。今天給大家?guī)?lái)兩款內(nèi)網(wǎng)穿透工具的交叉編譯移植,方便在RK3506上搭建相關(guān)應(yīng)用。在編譯兩個(gè)工具
    的頭像 發(fā)表于 12-25 17:29 ?761次閱讀
    技術(shù)分享 | RK3506如何<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>frp wireguard
    交城县| 崇义县| 安陆市| 常宁市| 栾川县| 邳州市| 大厂| 耿马| 北碚区| 漯河市| 邯郸县| 南充市| 南昌市| 深泽县| 定安县| 枞阳县| 图木舒克市| 淮南市| 买车| 商水县| 壶关县| 玉门市| 高青县| 文安县| 兴宁市| 新乐市| 湘乡市| 丹凤县| 佳木斯市| 肃南| 建始县| 庆阳市| 阳高县| 利津县| 江津市| 葵青区| 依安县| 九寨沟县| 滕州市| 北川| 大洼县|