linux代碼閱讀
⑴ 如何查看linux命令源代碼和函數源代碼
1. 以搜索ls命令源碼為例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls
/bin/ls
2. 用命令搜索該軟體所在包,代碼如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls
3. 從上一步中可以知道ls命令的實現在包coreutils中,用apt安裝(說安裝有些歧義,主要是區分apt-get -d)該包的源代碼然後解壓,代碼如下:
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表示版本號
sudo tar zxvf coreutils-XXX.tar.gz
或者只下載源碼,然後手動打補丁再解壓,代碼如下:
sudo apt-get -d source coreutils
cd /usr/src
tar zxvf coreutils-XXX.tar.gz
gzip -d coreutils-XXX.diff.gz #這一步會生成coreutils-XXX.diff文件
patch -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf coreutils-XXX.tar.gz
OK,這幾步執行完後,就可以進入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令對應的源代碼了
⑵ 大家在Linux系統下用什麼工具閱讀內核源碼
我在linux下閱讀源碼依然是
source
insight
--
wine,不過沒讀過kernel.還在讀一些小的開源代碼。
⑶ Linux下有沒有類似SourceInsight的代碼閱讀工具
系統之爭
Linux啊,這個系統其實挺好用的,無奈的就是微軟的windows傳播的太廣,用戶依賴度太高,不然的話我們可以看到兩分天下的盛況。有一個軟體叫Docfader,事實上,這不是一個特殊的代碼閱讀軟體,但它是一個桌面搜索引擎,你可以添加任何文件目錄df資料庫中生成的,然後你就可以像使用谷歌搜索的內部文件名稱和內容。由於源代碼純文本的性質,很適合使用搜索引擎輔助閱讀。因為我已經有了這個東西,所以我不喜歡查看VisualStudio、Eclipse或任何其他IDE中的代碼(盡管VS 2015的峰值定義特性非常酷),不需要進行調試。SourceInsight甚至根本沒有打開它。
希望你用的開心。
⑷ 在Windows下如何閱讀Linux下的源代碼
windows下一般使用source insight來閱讀linux源碼。
Source Insight是一個面向項目開發的程序編輯器和代碼瀏覽器,它擁有內置的對C/C++, C#和Java等程序的分析。能分析源代碼並在工作的同時動態維護它自己的符號資料庫,並自動顯示有用的上下文信息。
⑸ Linux下有沒有類似SourceInsight的代碼閱讀工具
有啊,kscope和Source Insight類似,也是圖形界面的,用它來閱讀代碼,可以像Source Insight那樣,用滑鼠點擊就可以跳轉到函數、類、變數的定義處。還有用Vim+cscope+ctags的,但是cscope不夠准確,還有螞悉納,cscope是用悶沒命陸塵令來跳轉到代碼定義地方的。
⑹ linux下閱讀別人的代碼時,你們怎麼跳轉
vim也有插件可以實現纖敬,代碼高亮、自動補全。。。這些都可以灶和實現的,不過配置起來稍微麻煩點。
自動跳轉那個插件需要把你要用到的頭文件都採集了做個隱豎盯關聯,用的時候就可以跳轉了。可以查查ctags或者其他的插件
⑺ python查看linux執行二進制文件的源代碼
python查看linux執行二進制文件的源代碼的步驟如基襲下。
1、打開終端,使用cd命令進入存放搏巧兄二進制文件的目錄。
2、執行命令,將二寬弊進制文件轉換成匯編代碼:binary_file是要查看的二進制文件名,output_file是轉換後的匯編代碼輸出到的文件名。
3、打開output_file文件,閱讀其中的匯編代碼即可了解二進制文件的運行機制和實現原理。
⑻ 怎麼讀Linux內核代碼
一般在Linux系統中的/usr/src/linux*.*.*(*.*.*代表的是內核版本,如2.4.23)目錄下就是內核源代碼(如果沒有類似目錄,是因為還沒安裝內核代碼)。另外還可從互連網上免費下載。注意,不要總到http://www.kernel.org/去下載,最好使用它的鏡像站點下載。請在http://www.kernel.org/mirrors/里找一個合適的下載點,再到pub/linux/kernel/v2.6/目錄下去下載2.4.23內核。
代碼目錄結構
在閱讀源碼之前,還應知道Linux內核源碼的整體分布情況。現代的操作系統一般由進程管碧鄭理、內存管理、文件系統、驅動程序和網路等組成。Linux內核源碼的各個目錄大致與此相對應,其組成如下(假設相對於Linux-2.4.23目錄):
1.arch目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel CPU及與之相兼容體系結構的子目錄。PC機一般都基於此目錄。
2.include目錄包括編譯核心所需要的大部分頭文件,例如與平台無關的頭文件在include/linux子目錄下。
3.init目錄包含核心的初始化代碼(不是系統的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。
4.mm目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/*/mm目錄下。
5.drivers目錄中是系統中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如音效卡的驅動對應棗慧改凳判於drivers/sound。
6.ipc目錄包含了核心進程間的通信代碼。
7.moles目錄存放了已建好的、可動態載入的模塊。
8.fs目錄存放Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext3文件系統對應的就是ext3子目錄。
Kernel內核管理的核心代碼放在這里。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
9.net目錄里是核心的網路部分代碼,其每個子目錄對應於網路的一個方面。
10.lib目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在arch/*/lib/目錄下。
11.scripts目錄包含用於配置核心的腳本文件。
12.documentation目錄下是一些文檔,是對每個目錄作用的具體說明。
一般在每個目錄下都有一個.depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯系和依託關系很有幫助。另外有的目錄下還有Readme文件,它是對該目錄下文件的一些說明,同樣有利於對內核源碼的理解。
在閱讀方法或順序上,有縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是按模塊進行。它們經常結合在一起進行。對於Linux啟動的代碼可順著Linux的啟動順序一步步來閱讀;對於像內存管理部分,可以單獨拿出來進行閱讀分析。實際上這是一個反復的過程,不可能讀一遍就理解。
⑼ Linux下有沒有類似SourceInsight的代碼閱讀工具
Linux上有很多這樣的軟體,比微軟發布的VScode,它也是一個文本編輯器軟體,可以閱讀任何語言寫成的代碼,而且有「打開文件夾」的功能(相當於文件管理器插件)閱讀代碼非常方便。它有32位Linux版和64位Linux版,可以到VScode官網上下載deb或rpm軟體包來安裝,或者是下載tar.gz格式的tar包,解壓後直接運行(不需要安裝)。還有一個叫Atom的很有名的編輯器,同樣支行褲持所有的編程語言,不管是閱讀代碼還是寫代碼都很強大,不過目前只有64位的Linux版本,沒有32位版。和帶豎還有喚大Sublime text,目前有Sublime text 2和Sublime text 3兩個版本,不過它是收費軟體。最後再介紹一個,幾乎每一種Linux發行版上,都預裝的文本編輯器軟體,那就是gedit,表面上看功能不多,但是各種插件不少,需要設置一下才能發揮它的強大功能。這些工具網上有設置、使用教程,網路一下就知道了。
⑽ 如何讀懂linux內核源碼
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識; 2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。
另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/-/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/-/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/-/lib/目錄下。
scripts 此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。