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

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
    +關注

    關注

    87

    文章

    11306

    瀏覽量

    209571
  • 命令
    +關注

    關注

    5

    文章

    684

    瀏覽量

    22030
  • GNU
    GNU
    +關注

    關注

    0

    文章

    143

    瀏覽量

    17496

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

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

收藏 人收藏

    評論

    相關推薦

    Linux文件查找

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

    Linux lsof命令的基本用法

    在 linux 系統中,切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看進程打開的文件
    的頭像 發表于 10-23 11:52 ?275次閱讀
    Linux lsof<b class='flag-5'>命令</b>的基本用法

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

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

    嵌入式學習-常見的shell命令文件操作相關命令

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

    常見的shell命令文件操作相關命令

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

    恒訊科技分析:香港服務器的linux如何顯示文件內容?

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

    鴻蒙開發文件管理:【@ohos.fileio (文件管理)】

    該模塊提供文件存儲管理能力,包括文件基本管理、文件目錄管理、文件信息統計、文件流式讀寫等常用功能
    的頭像 發表于 06-12 18:12 ?1237次閱讀
    鴻蒙開發<b class='flag-5'>文件</b>管理:【@ohos.fileio (<b class='flag-5'>文件</b>管理)】

    PCBA加工里ODB文件是什么

    所有PCB繪圖、布線層、布線圖、焊盤堆、夾具等有信息。 它的提出主要用來替代GEBER文件的不足,包含有更多的制造、裝配信息、器件信息等等,這也是我們需要的制造
    的頭像 發表于 04-10 16:05 ?1411次閱讀

    嵌入式Linux C語言編程程序調試與宏定義

    在Linux使用gcc編譯程序的時候,對于調試的語句還具有一些特殊的語法。gcc編譯的過程中,會生成一些宏,可以使用這些宏分別打印當前源文件信息
    發表于 03-01 11:41 ?1019次閱讀

    Kubectl核心命令總結:如何快速掌握K8s

    設置 kubectl 命令交互的 kubernetes 集群并修改配置信息。參閱 使用 kubeconfig 文件進行跨集群驗證 獲取關于配置文件的詳細
    的頭像 發表于 02-23 14:43 ?469次閱讀
    Kubectl核心<b class='flag-5'>命令</b>總結:如何快速掌握K8s

    Linux系統中一些重要的配置文件介紹

    系統文件用于配置主機名與 IP 地址的映射關系。當系統需要解析主機名時,會首先查找 /etc/hosts 文件,如果在該文件中找到了相應的映射關系,則直接使用對應的 IP 地址進行通
    的頭像 發表于 02-19 17:39 ?3748次閱讀

    如何使用linux下gdb來調試python程序

    中,我們將介紹如何在Linux中使用GDB來調試Python程序。 、安裝GDB和Python調試符號 在使用GDB調試Python程序之
    的頭像 發表于 01-31 10:41 ?2630次閱讀

    是否可以使用XMC Flasher命令行實用程序(bat 文件)將目標閃存讀取到*.hex 文件中?

    是否可以使用 XMC Flasher 命令行實用程序(bat 文件)將目標閃存讀取到*.hex 文件中?
    發表于 01-26 07:24

    《Linux常用命令自學手冊》+Linux簡單指令筆記

    還可以結合管道符“|”來進行一些復雜的操作。如果不指定File或Directory參數,ls命令顯示當前目錄的內容。 CP指令: 它的基本語法如下:cp [選項] 源文件 目標
    發表于 01-05 08:44

    常用的大日志文件查詢命令詳解

    最近需要查詢大日志文件的時候,每次打開vim,cat之類的都會卡死,但是需要查看符合條件的共有多少行數據,這顆愁死我了,下面列出一些常用的匹配查詢命令
    的頭像 發表于 01-02 11:27 ?930次閱讀
    主站蜘蛛池模板: 六九视频在线观看| aⅴ一区二区三区| 亚洲天堂va| 97影院午夜在线观看视频| 人人舔| 日本三级欧美三级香港黄| 黄网站免费视频| 国产精品久久免费观看| 欧美性第一页| 黄色天堂| 日本不卡在线播放| 看视频免费网址| 亚洲一区中文| 草久久久久| 丁香五月缴情在线| 乱高h亲女| 555成人免费影院| 欧美一卡2卡三卡4卡5卡免费观看| 亚洲毛片儿| 中文字幕区| 国产亚洲卡二卡3卡4卡乱码| 性欧美大战久久久久久久| 特黄aaaaa日本大片免费看| 国产美女叼嘿视频免费看| 婷婷开心激情| 中文在线最新版天堂| 天天性综合| 天天爱天天干天天操| 黄网站色视频| 欧美第一色| 日本福利小视频| 国产综合图片| 午夜国产精品视频| 国产精品大全| 国产小视频在线免费| 免费看片免费播放| 欧美色炮| 亚洲成a人片在线观看尤物| 女人的天堂网站| 精品视频网站| 天天天射|