...
其實問題的本質是對elf格式的理解問題,因為是查看so庫的符號表發現的問題。 事情起因是這樣的,由於我的一個程序編譯的時候出現了undefined reference to XXX 的錯誤,需要鏈接特定的so庫,發現用nm file 找不到 XXX 函數符號,結果用readelf s file 就找到了。其實問題是我對so理解的不深刻。 一般來說,對於一個so庫有兩個符號表,一個是 正常的 在.s ...
2014-11-17 10:42 0 5852 推薦指數:
...
最近在調試一些問題,發現幾個命令很實用,記錄一下。 一 背景 也許大家都遇到過這種場景,就是有二進制代碼,比如深度分析下此文件到底是什么格式的圖片等,這篇文章就記錄我分析下二進制可執行文件的過程,已經自己讀寫二進制文件的一些坑。分析的二進制執行文件為linux下的可執行文件 ...
GCC把C語言源文件('.c')編譯成匯編語言文件('.s'),匯編器把匯編語言文件翻譯成目標文件('.o'),最后由鏈接器鏈接所有的目標文件和有關的庫生成可執行文件('a.out')。 如打 ...
原文鏈接 編譯 nm:列出目標文件中的符號。 objdump:顯示目標文件中的詳細信息。 readelf:顯示關於 ELF 目標文件的信息。 參考 清單 1. hw.c 程序 #include <stdio.h> ...
Date: 2018.7.18 1、參考: https://www.jianshu.com/p/863b279c941e https://sourceware.org/binutils/docs/binutils/nm.html 2、Linux中目標文件解析的三個命令 ...
前言 nm是name的縮寫,它顯示指定文件中的符號信息,文件可以是對象文件、可執行文件或對象文件庫。如果文件中沒有包含符號信息,nm報告該情況,單不把他解釋為出錯。nm缺省情況下報告十進制符號表示法下的數字值。 選項 -a/--debug-syms:顯示所有符號,包括 ...
nm在linux中列出目標文件的符號清單,常用來查看動態鏈接庫中的函數 nm支持的選項如下 -a 按照man手冊,僅列出調試信息,實際上卻是調試信息+正常信息 -A 增加一列顯示目標文件,沒有實際意義 -C 將低級符號信息編碼成便於查看的用戶信息 ...
轉:http://blog.csdn.net/stpeace/article/details/47089585 一般來說, 搞linux開發的人, 才會用到nm命令, 非開發的人, 應該用不到。 雖然nm很簡單, 但是還是有必要寫幾句, 聊表心意。 nm不是ni ma ...