一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

strip命令:用于剝掉目標(biāo)文件中一些符號信息和調(diào)試信息,使文件變小

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-02 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.命令簡介

strip 命令是 GNU Binutils 中的一員,用于剝掉目標(biāo)文件中一些符號信息和調(diào)試信息,使文件變小。

2.命令格式

3.選項說明

[-F bfdname |--target=bfdname]:使用指定的二進(jìn)制文件格式(Binary Format Descriptor)解析輸入的目標(biāo)文件,輸出目標(biāo)文件時也采用相同的格式
[-I bfdname |--input-target=bfdname]:使用指定的二進(jìn)制文件格式(Binary Format Descriptor)解析輸入的目標(biāo)文件
[-O bfdname |--output-target=bfdname]:使用指定的二進(jìn)制文件格式(Binary Format Descriptor)輸出目標(biāo)文件
[-s|--strip-all]:刪除所有符號
[-S|-g|-d|--strip-debug]:僅刪除調(diào)試符號
[--strip-dwo]:刪除所有DWARF .dwo節(jié)的內(nèi)容,保留其余調(diào)試節(jié)和所有符號不變
[-K symbolname |--keep-symbol=symbolname]:保留源文件中指定的符號symbolname
[-N symbolname |--strip-symbol=symbolname]:從源文件中刪除符號symbolname。此選項可能不止一次
[-w|--wildcard]:允許在其他命令行選項中對符號名稱使用正則表達(dá)式。問號(?)、星號(*)、反斜杠()和方括號([])運算符可以在符號名的任何位置使用
[-x|--discard-all]:刪除非全局符號
[-X |--discard-locals]:刪除編譯器生成的本地符號
[-R sectionname |--remove-section=sectionname]:從輸出文件中刪除名為sectionname的任何節(jié)。此選項可能會給出多次。請注意,不適當(dāng)?shù)厥褂么诉x項可能會使輸出文件不可用。通配符*可以在sectionname的末尾給出。如果是這樣,則將刪除以sectionname開頭的任何節(jié)
[-o file]:將剝離的輸出放入文件 file 中,而不是替換現(xiàn)有文件。使用此參數(shù)時,只能指定一個objfile
[-p|--preserve-dates]:保留文件的訪問和修改日期
[-D|--enable-deterministic-archives]:以確定性模式(deterministic mode)操作。復(fù)制存檔成員和寫入存檔索引時,對UIDs、GIDs、時間戳使用零,對所有文件使用一致的文件模式
[-U|--disable-deterministic-archives]:不以確定性模式(deterministic mode)操作。這與上面的-D選項相反:復(fù)制存檔成員并寫入存檔索引時,使用它們的實際UID、GID、時間戳和文件模式值
[--keep-file-symbols]:保留符號信息
[--only-keep-debug]:保留調(diào)試信息
[-v |--verbose]:詳細(xì)輸出:列出所有修改的對象文件。對于歸檔文件,strip-v 列出了歸檔文件的所有成員
[-V|--version]:顯示版本信息
[-h|--help]:顯示幫助信息
[--info]:列出支持的目標(biāo)文件格式和架構(gòu)
 objfile...:目標(biāo)文件,包括庫文件或可執(zhí)行文件

4.常用示例

先看一個 C++ 源碼文件 main.cpp。

//
//@file:main.cpp
//

#include

intmain()
{
std::cout<<"strip"<

使用 g++ 編譯生成可執(zhí)行文件 main.out。

g++-omain.outmain.cpp
ll
-rw-r--r--1rootroot68Mar2215:55main.cpp
-rwxr-xr-x1rootroot9119Mar2215:55main.out

(1)剝掉可執(zhí)行文件中一些符號信息和調(diào)試信息,使文件變小。

首先使用file命令來查看可執(zhí)行文件main.out的基本信息,可見其是not stripped。

filemain.out
main.out:ELF64-bitLSBexecutable,x86-64,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=9d0d7d3718cf9a4cfdc3e026de804e2428bb60fa,notstripped

然后使用 nm 命令來查看 main.out 中的符號。

nmmain.out
000000000060105cB__bss_start
0000000000601170bcompleted.6337
U__cxa_atexit@@GLIBC_2.2.5
0000000000601058D__data_start
0000000000601058Wdata_start
00000000004007b0tderegister_tm_clones
0000000000400820t__do_global_dtors_aux
0000000000600de8t__do_global_dtors_aux_fini_array_entry
0000000000400978R__dso_handle
0000000000600df8d_DYNAMIC
000000000060105cD_edata
...

使用strip來剝掉main.out中的符號信息,并查看大小,文件基本信息和符號信息。

stripmain.out

llmain.out
-rwxr-xr-x1rootroot6272Mar2216:14main.out

filemain.out
main.out:ELF64-bitLSBexecutable,x86-64,version1(SYSV),dynamicallylinked(usessharedlibs),forGNU/Linux2.6.32,BuildID[sha1]=9d0d7d3718cf9a4cfdc3e026de804e2428bb60fa,stripped

nmmain.out
nm:main.out:nosymbols

可見main.out的大小從9119字節(jié)變?yōu)?272字節(jié),且file命令顯示文件狀態(tài)為stripped,使用nm命令顯示main.out已經(jīng)沒有符號了。

5.小結(jié)

通過上面的例子可以看出,strip 命令可用于剝掉目標(biāo)文件的符號,使文件變小,這就節(jié)省了很多空間。

其實, strip 不僅僅針對可執(zhí)行文件, 還能針對目標(biāo)文件和靜態(tài)、動態(tài)庫等。在實際的開發(fā)中, 經(jīng)常需要對動態(tài)庫 .so 進(jìn)行 strip 操作, 減少空間。而在調(diào)試的時候(比如用 addr2line),就需要符號了。因此,通常的做法是用 strip 前的庫來調(diào)試,strip 后的庫用來發(fā)布, 發(fā)布的 strip 后的庫一旦出了問題, 就可以找對應(yīng)的未 strip 的庫來定位。


參考文獻(xiàn)

[1] strip manual
[2] GNU Binutils
[3] linux中的strip命令簡介

責(zé)任編輯:xj

原文標(biāo)題:每天一個 Linux 命令(104):strip 命令

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213837
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    737

    瀏覽量

    22882
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17879

原文標(biāo)題:每天一個 Linux 命令(104):strip 命令

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux系統(tǒng)查看及修改設(shè)備型號信息,觸覺智能RK3562開發(fā)板演示

    本文介紹Linux系統(tǒng)如何查看及修改設(shè)備型號信息的方法,適用于想查看設(shè)備型號信息或者想將設(shè)備型號信息修改為自己項目的名稱的情況。觸覺智能RK3562開發(fā)板演示。查看設(shè)備
    的頭像 發(fā)表于 06-19 15:58 ?389次閱讀
    Linux系統(tǒng)查看及修改設(shè)備型號<b class='flag-5'>信息</b>,觸覺智能RK3562開發(fā)板演示

    飛凌嵌入式ElfBoard ELF 1板卡-uboot常用命令文件系統(tǒng)命令

    uboot支持fat格式、ext格式的文件系統(tǒng)。我們主要講解fat格式文件系統(tǒng)常用命令使用。 、fatinfo fatinfo顯示選中的mmc設(shè)備指定分區(qū)的
    發(fā)表于 05-26 17:32

    PCBA加工廠如何制定Gerber文件

    的核心作用 Gerber文件是PCB制造的核心數(shù)據(jù)格式,用于描述電路板的物理結(jié)構(gòu),包括: 銅層信息:走線、焊盤、過孔等電氣連接。 阻焊層:定義焊盤與走線的保護區(qū)域。 絲印層:標(biāo)注元件標(biāo)識、符號
    的頭像 發(fā)表于 05-22 14:15 ?256次閱讀
    PCBA加工廠如何制定Gerber<b class='flag-5'>文件</b>

    TSolidX應(yīng)用:液晶掩膜結(jié)構(gòu)GDSⅡ文件的生成和導(dǎo)出

    文件一些必要信息 1.2 加載完畢后,即可打開或進(jìn)行編輯 2. 導(dǎo)出GDSⅡ文件 2.1 在Layout軟件中創(chuàng)建好結(jié)構(gòu)后,如下圖找到導(dǎo)出選項 2.2 設(shè)置導(dǎo)出GDSⅡ
    發(fā)表于 05-20 08:45

    ESI文件詳解:讓EtherCAT網(wǎng)絡(luò)配置更智能!

    EtherCAT從站信息(ESI)文件種標(biāo)準(zhǔn)化的XML格式文檔,專門用于描述EtherCAT從站的特性和配置。它提供了所有必要的詳細(xì)信息
    的頭像 發(fā)表于 05-09 17:39 ?738次閱讀
    ESI<b class='flag-5'>文件</b>詳解:讓EtherCAT網(wǎng)絡(luò)配置更智能!

    Allegro Skill封裝功能-導(dǎo)出device文件介紹與演示

    Device文件定義了原理圖中的符號(Symbol)與實際PCB布局中的封裝(Footprint)之間的對應(yīng)關(guān)系。例如,個電阻的原理圖符號可能對應(yīng)多種封裝(如0805、0603等),
    發(fā)表于 04-19 09:44 ?772次閱讀
    Allegro Skill封裝功能-導(dǎo)出device<b class='flag-5'>文件</b>介紹與演示

    NFS網(wǎng)絡(luò)文件系統(tǒng)深度解析

    NFS:Network File System 網(wǎng)絡(luò)文件系統(tǒng),基于內(nèi)核的文件系統(tǒng)。Sun 公司開發(fā),通過使用 NFS,用戶和程序可以像訪問本地文件樣訪問遠(yuǎn)端系統(tǒng)上的
    的頭像 發(fā)表于 03-01 14:15 ?708次閱讀

    Linux文件管理命令詳解

    cat命令描述:該命令用于連接文件并打印到標(biāo)準(zhǔn)輸出設(shè)備上。
    的頭像 發(fā)表于 02-17 10:34 ?478次閱讀
    Linux<b class='flag-5'>文件</b>管理<b class='flag-5'>命令</b>詳解

    Linux文件查找

    Linux文件查找 1.find查找概述 為什么要有文件查找,因為很多時候我們可能會忘了某個文件所在的位置,此時就需要通過find來查找。 find命令可以根據(jù)不同的條件來進(jìn)行查找
    的頭像 發(fā)表于 12-03 17:09 ?733次閱讀

    XCP之A2L文件簡介

    A2L文件個標(biāo)定的描述文件,基于文本格式,描述ECU的通信等相關(guān)的參數(shù),以及標(biāo)定,觀測變量的地址以及物理值計算公式等等。A2L 文件中的信息
    的頭像 發(fā)表于 11-13 11:15 ?1873次閱讀
    XCP之A2L<b class='flag-5'>文件</b>簡介

    Linux lsof命令的基本用法

    在 linux 系統(tǒng)中,切皆文件。通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以 lsof 命令不僅可以查看進(jìn)程打開的文件
    的頭像 發(fā)表于 10-23 11:52 ?1315次閱讀
    Linux lsof<b class='flag-5'>命令</b>的基本用法

    hex文件如何查看原c語言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語言代碼則是人類可讀的高級編程語言代碼。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對程序進(jìn)行分析,你可以考慮以下幾種方法: 反匯編(Disassembly) : 使用反匯編工
    的頭像 發(fā)表于 09-02 10:37 ?4958次閱讀

    嵌入式學(xué)習(xí)-常見的shell命令文件操作相關(guān)命令

    查找文件里符合條件的字符串參數(shù):grep [選項] 示例: 14、uname列出內(nèi)核信息命令:uname英文全拼:unix name功能:用于顯示系統(tǒng)
    發(fā)表于 08-20 09:40

    常見的shell命令文件操作相關(guān)命令

    將tar.bz2的壓縮包解壓到指定目錄10、ln創(chuàng)建鏈接命令命令:ln英文全拼:link files功能:為某文件在另外個位置建立
    發(fā)表于 08-19 10:01

    恒訊科技分析:香港服務(wù)器的linux如何顯示文件內(nèi)容?

    在Linux系統(tǒng)中查看文件內(nèi)容有多種方法,以下是一些常用的命令: 1、使用cat命令:這是最基本和常用的查看文件內(nèi)容的方法。你可以直接輸入c
    的頭像 發(fā)表于 07-19 12:49 ?440次閱讀