国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

strip命令:用于剝掉目標文件中一些符號信息和調試信息,使文件變小

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

掃碼添加小助手

加入工程師交流群

1.命令簡介

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

2.命令格式

3.選項說明

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

4.常用示例

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

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

#include

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

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

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

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

首先使用file命令來查看可執行文件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字節變為6272字節,且file命令顯示文件狀態為stripped,使用nm命令顯示main.out已經沒有符號了。

5.小結

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

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


參考文獻

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

責任編輯:xj

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

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


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

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 命令
    +關注

    關注

    5

    文章

    755

    瀏覽量

    23747
  • GNU
    GNU
    +關注

    關注

    0

    文章

    144

    瀏覽量

    18318

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深入解析U-Boot命令處理核心文件:功能、調試與開發價值

    在嵌入式系統開發中,U-Boot 作為主流的引導加載程序,其命令處理、交互邏輯和自動啟動流程是核心功能模塊。本文將圍繞command.c、cli.c和autoboot.c三個關鍵文件,從核心
    的頭像 發表于 02-03 15:44 ?876次閱讀
    深入解析U-Boot<b class='flag-5'>命令</b>處理核心<b class='flag-5'>文件</b>:功能、<b class='flag-5'>調試</b>與開發價值

    飛凌嵌入式ElfBoard-獲取文件的狀態信息文件權限

    、可執行文件等。b:表示這是個塊設備文件,如硬盤、光驅等。c:表示這是個字符設備文件,如鍵盤、鼠標等。l:表示這是
    發表于 12-16 08:40

    飛凌嵌入式ElfBoard-獲取文件的狀態信息之lstat

    1.頭文件#include 2.函數原型int lstat(const char *pathname, struct stat *statbuf);3.參數pathname:符號鏈接的路徑
    發表于 12-12 08:51

    飛凌嵌入式ElfBoard-獲取文件的狀態信息之fstat

    文件描述符,表示已打開的文件。statbuf:指向 struct stat 結構的指針,用于存儲文件的狀態信息。4.返回值若成功返回0,失
    發表于 12-11 08:44

    飛凌嵌入式ElfBoard-獲取文件的狀態信息之stat

    、st_ctime宏定義來獲取文件的各個時間狀態。1)st_mode字段st_mode字段本質上是個32位無符號整形數據,該變量主要記錄了文件的類型、
    發表于 12-10 08:42

    飛凌嵌入式ElfBoard-Linux系統中的文件分類

    個緩沖區,允許在系統內存中緩沖一些數據,然后起發送到塊設備上。通俗來說塊設備就是咱們平時說的存儲設備,如:硬盤、閃存等設備。在linux系統中一般節點名稱為:/dev/sda1(第
    發表于 12-09 08:59

    飛凌嵌入式ElfBoard-Linux系統基礎入門-文件操作相關shell命令

    -v顯示詳細處理信息-C轉到指定目錄,用于解壓文檔-j調用bzip2程序-z調用gzip程序-Z調用compress程序--exclude=PATH排除指定目錄,用于打包
    發表于 09-30 09:46

    飛凌嵌入式ElfBoard ELF 1板卡-Linux系統基礎入門-目錄相關shell命令

    ,權限,時間等信息-t依照建立時間順序列出文件-F按類型列出文件,在文件末尾用不同符號區分斜線(/)表示目錄星號(*)表示可執行
    發表于 09-29 10:12

    求助,關于TC387使能以及配置SOTA 中一些問題求解

    你好, 之前我拿到貴司給個demo,里面有一些使能以及配置SWAP的代碼, 這里有些疑問 問題1. 判斷SOTA功能是否生效,demo中使用的是 SCU_STMEM1中的bit位, 代碼如下
    發表于 08-08 07:31

    PCB中的Gerber文件是什么

    Gerber 文件用于電子設計自動化(EDA)中,尤其是在印刷電路板(PCB)設計和制造過程中,傳遞電路圖層、焊盤、走線、元件布局等信息的標準格式。它在PCB制造的各個環節中扮演著至關重要的角色,幫助制造商從設計
    的頭像 發表于 08-01 09:20 ?4661次閱讀

    TC399中的SCR代碼調試,ELF文件中缺少符號怎么解決?

    的任何調試信息 - 似乎沒有調試符號,因此,我無法調試 SCR 代碼。 您能否告知 Aurix Development Studio 是否提
    發表于 07-21 07:33

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

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

    PCBA加工廠如何制定Gerber文件

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

    TSolidX應用:液晶掩膜結構GDSⅡ文件的生成和導出

    文件一些必要信息 1.2 加載完畢后,即可打開或進行編輯 2. 導出GDSⅡ文件 2.1 在Layout軟件中創建好結構后,如下圖找到導出選項 2.2 設置導出GDSⅡ
    發表于 05-20 08:45

    ESI文件詳解:讓EtherCAT網絡配置更智能!

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