導航:首頁 > 源碼編譯 > linux多久可以看完源碼

linux多久可以看完源碼

發布時間:2022-07-13 15:38:44

1. 如何查看各種linux命令源碼

用linux一段時間了,有時候想看看ls、cat、more等命令的源代碼,在下載的內核源碼中用cscope沒能找到,在網上搜索了一下,將方 法總結如下:以搜索ls命令源碼為例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls /bin/ls用命令搜索該軟體所在包,代碼如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls coreutils: /bin/ls從上一步中可以知道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.gzOK,這幾步執行完後,就可以進入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令對應的源代碼了。關於更多Linux的學習,請查閱書籍《linux就該這么學》。

2. 【急】怎樣在linux中查看程序的源碼

壓縮包解壓後裡面就是源碼啊,windows下用好壓可以直接解壓縮,linux下根據壓縮包具體格式用tar -jxvf或者tar -zxvf命令解壓。解壓後裡面的文件都是源碼,什麼語言寫的文件就是什麼樣後綴的文件格式(這個不知道就別想著改代碼了)。
另外糾正一下,linux是開源的是對的,但是怎麼就得出linux上的應用也是開源的這樣的結論?linux開源指的是linux操作系統內核開源,在此之上提供的各種服務和應用不一定開源(當然有很多開源的,至於為什麼你可以了解下OTSS off the shelve system和GPL)

3. LFS linux安裝到底需要多長時間,安裝好的系統安裝軟體只能源碼編譯安裝嗎

1周,含操作和設置時間。因為 LFS 是純從源代碼編譯而來,而且他本身不是一個發行版而是一個手冊。看手冊自己打命令才是 LFS 的本意。當然有自動化的 LFS 腳本可用,不過那個就是 ALFS 的范疇了。

LFS 支持裝個包管理系統的,不過那樣會導致包管理系統裡面的數據為「空」。也就是說,你除非自己強行修改包管理系統的資料庫,或者修改每個一軟體包的依賴關系設置,不然你在安裝包管理系統之前的所有軟體、程序庫,都不能被軟體包管理系統找到,這會導致你的軟體包管理系統在安裝軟體包的時候,會提示以來不足而無法安裝。

LFS 適合作為一個新版本的起點,當安裝到包管理系統後,還是需要重新用包管理系統的編譯功能重新編譯整個系統。這樣後,系統就已經不是 LFS 的內容了。

當然有那種超輕量的不考慮依賴關系的軟體包管理系統可以選擇。
不過我建議,你還是用 Gentoo 吧。符合 LFS 的結局,但又有從一開始就伴隨你的包管理系統。

或者選擇 arch ,他的包管理系統對於重新編譯還是很方便的。不過他又不像 Gentoo ,每個包都要自己編譯。

至於 rpm deb 這種包管理系統,太過龐大。重新編譯他們很困難的。

4. 如何查看 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 此目錄是一些文檔,起參考作用。

俗話說:「工欲善其事,必先利其器」。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!

5. 如何查看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中查看各命令對應的源代碼了

6. 在linux中git獲取openstack源碼要多久

OpenStack 是一種基礎架構即服務 (IaaS) 雲計算項目。
資源通過一個儀錶板來管理,該儀錶板向管理員提供了控制權,並通過一個 Web 介面為用戶提供了配置資源的權利。本文將介紹如何設置帳戶、設置開發環境以及如何開始為 OpenStack 做貢獻。
第 1 步:通過在線注冊和密鑰配置來設置帳戶

設置您的 Launchpad 帳戶。Launchpad 是 OpenStack 用來託管其所有項目的位置。請訪問 Launchpad 登錄頁面,使用您的電子郵件地址進行注冊,並為自己選擇一個便於記憶的 Launchpad ID。然後訪問 https://launchpad.net/~LaunchpadID,設置您的 OpenPGP 密鑰,並使用該頁上的說明上傳您的 SSH 公鑰。例如,我的 Launchpad id 是 houshengbo,因此我將訪問 https://launchpad.net/~houshengbo,如圖 1 所示。

圖 1. 設置 OpenPGP 密鑰

為 Gerrit 設置您的 SSH 帳戶。OpenStack 應用了一個代碼評審過程來保證代碼質量。請訪問 OpenStack 代碼審查 頁面,並使用您的 Launchpad 帳戶進行登錄。然後訪問 https://review.openstack.org/#/settings/ssh-keys 並上傳您的 SSH 公鑰。

圖 2. 上傳 SSH 公鑰

第 2 步:簽署 CLA 協議
請加入 OpenStack Foundation(如果您尚未加入)。使用您計劃用於貢獻代碼的電子郵件地址。foundation profile 中的主要電子郵件地址需要與您稍後在 Gerrit 聯系信息中設置的首選電子郵件相匹配。
請訪問 Code Review 頁面。單擊位於該頁面右上角的 Sign In 鏈接。使用您的 Launchpad ID 登錄 Launchpad。
除非您是美國政府雇員(參見以下內容),否則請同意 Indivial Contributor License Agreement 並提供聯系信息。您的所有姓名和電子郵件地址都是公開的。如果需要的話,可以稍後 更新 此聯系信息,但確保主要電子郵件地址始終與為您的 OpenStack Foundation 會員身份設置的電子郵件地址相匹配。
加入 OpenStack Contributors 組。需要以會員身份提交代碼更改。

如果您以個人貢獻者的身份工作,那麼執行上述步驟就足夠了。如果您代表公司或美國政府工作,那麼您可能需要關注其他一些內部審批過程,這些過程因公司而異。有關的詳細信息,請參閱 貢獻者許可協議。

第 3 步:設置本地開發環境
設置 Eclipse 環境:

在 Eclipse 窗口上,單擊 Help > Install New Software。
在 Work with 欄位中,輸入 http://download.eclipse.org/egit/updates 並單擊 Add。
選中位於 Eclipse Git Team Provider 下面的 Eclipse EGit。
單擊 Next,直到您找到 Review Licences 窗口。接受許可條款並單擊 Finish。

在 Eclipse 窗口上,單擊 Help > Install New Software。
配置 Eclipse 的 python interpreter。在 Work with 欄位中,輸入 http://pydev.org/updates並單擊 Add。
選中 PyDev。
單擊 Next,直到您找到 Review Licences 窗口。接受許可條款並單擊 Finish。

安裝附帶 python 的 Ubuntu 11.10 或 11.10+。
安裝 git:sudo apt-get install git。
安裝 Eclipse。
安裝 Eclipse 的 PyDev 插件。

安裝 Eclipse 的 EGit 插件。

設置代碼庫。

打開一個終端,轉到目標目錄(例如,/opt/stack)並運行以下命令以獲得 keystone 代碼:
git clone https://github.com/openstack/keystone.git
將項目導入 Eclipse:運行 Eclipse 並將工作區設置為保存所有項目 (/opt/stack) 的目錄。
創建 PyDev 項目:單擊 File > New > PyDev project。使其名稱與該項目相同,如 keystone,然後單擊Finish。
將該項目與 Egit 同步:在 Eclipse 中,右鍵單擊該項目 (keystone),單擊 Team > Share project,然後單擊 Next 和 Finish。
完成上述步驟之後,應該會在 Eclipse 中看到位於您的項目名稱後面的 [keystone master]。

打開一個終端,轉到目標目錄,並運行以下命令獲得 devstack 代碼:
git clone git://github.com/openstack-dev/devstack.git
在剛剛創建的 devstack 目錄下創建一個名為 localrc 的文件。可以在 DevStack 網站上查找關於如何 配置 localrc 的信息。
運行 ./stack.sh。默認工作目錄是 /opt/stack,可以手動更改它。當初次運行 devstack 獲得成功之後,可以在 /opt/stack 下找到所有代碼。

使用 devstack:

另一個方法是下載特定項目,而不是克隆所有項目。以 Keystone 項目為例:

運行單元測試
對某個項目運行所有單元測試:

打開一個終端並轉到項目目錄,例如 keystone。
運行 ./run_tests.sh 命令。當詢問您是否想創建一個虛擬環境時,選擇 Y 或 N。

測試一個示例:

打開一個終端並轉到項目目錄,例如 keystone。
運行 ./run_tests.sh <file path> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py。

測試一個示例:

打開一個終端並轉到項目目錄,例如 keystone。
運行 ./run_tests.sh <file path>:<class name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests。

測試一個方法:

打開一個終端並轉到項目目錄,例如 keystone。
運行 ./run_tests.sh <file path>:<class name>.<method name> 命令,例如 ./run_tests.sh /opt/stack/keystone/tests/test_backend.py:CommonHelperTests.test_format_helper_raises_malformed_on_incomplete_format。

運行 OpenStack 服務
運行 Devstack 的所有服務:

打開一個終端並轉到 devstack 目錄。
運行 ./stack.sh 命令。在 localrc 中,指定要運行的服務,例如 ENABLED_SERVICES=key,c-api,c-vol,c-sch,mysql,rabbit。
運行 ./unstack.sh 關閉所有服務。
首次運行 ./stack.sh 獲得成功之後,您還可以運行 ./rejoin-stack.sh 來運行所有指定的服務。

在 Eclipse 中運行服務。以 Keystone 為例:

在 Eclipse 中設置 keystone 的調試配置。右鍵單擊腳本 keystone—bin 下的所有內容,然後單擊Debug as > Debug Configurations,如圖 3 所示。

圖 3. 調試配置

設置調試配置。單擊 Arguments 選項卡,選擇 Other 作為工作目錄,然後輸入 ${workspace_loc:keystone},如圖 4 和圖 5 所示。

圖 4. Main 選項卡配置

圖 5. Arguments 選項卡配置

啟動 Keystone:單擊 Debug Configuration 窗口上的 Debug 按鈕,或從 Debug/Run 下拉工具欄按鈕中運行它,如圖 6 所示。

圖 6. 啟動 Keystone 服務

第 4 步:設置本地計算機配置
設置 git 全局配置:

打開一個終端。
運行 git config --global user.name "Firstname Lastname" 命令。
運行 git config --global user.email "[email protected]" 命令。

安裝 git-review 工具:

對於 Ubuntu 12.04 或更高版本,在一個終端中運行 sudo apt-get install git-review 命令。
對於 Ubunu 12.04 之前的版本,則運行 sudo pip install git-review 命令。

配置您的項目以了解 Gerrit:

打開一個終端並轉到項目目錄,例如 keystone。
運行 git review -s 命令。系統會要求您輸入您的 gerrit 用戶名。請鍵入您的 Launchpad id 並按下 Enter 鍵。

第 5 步:OpenStack 工作流程演示
如果您發現了一個 OpenStack 問題,請將它注冊為一個 bug。如果想添加新功能,那麼請將它注冊為藍圖。您將要添加的修改應位於分支版本而不是主版本中。此外,不要在一個分支版本中混合多個 bug 修復或藍圖開發。下面的工作流程顯示了 Keystone 中 bug 修復的一個示例。
提交 Keystone 的 bug:

圖 7. 提交 Keystone 的 bug

訪問 https://launchpad.net/keystone。
單擊 Report a bug,然後輸入概要信息和所需的信息。
單擊 Submit bug report 按鈕。此 bug 具有一個鏈接:https://bugs.launchpad.net/keystone/+bug/1087674 和一個 bug 號:1087674。
在 Assigned to 列中將這個 bug 分配給你自己。

在 keystone 中為此 bug 創建一個分支(分支名稱 Bug1087674):

打開一個終端並轉到 keystone 目錄。
通過 git checkout master 確保 keystone 位於主版本中。
運行 git checkout -b Bug1087674 命令。

在分支 Bug1087674 中修改 keystone 代碼。
將該代碼提交給 Gerrit:

打開一個終端並轉到 keystone 目錄。
運行 git commit -a 命令。
輸入一些注釋。第一段應該是一句話的簡介;第二段可以是詳細說明(可選);如果此分支修復一個 bug 或一個藍圖,則添加 Fixes Bug1087674 或 Blueprint XXXX 作為最後一段。
運行 ctrl+o 命令,按下 Enter 鍵,然後運行 ctrl+x。
運行 git review。

檢查提交的修補程序:

圖 8. 已提交的修補程序的 Review 頁面

轉到 https://review.openstack.org 並使用您的 Launchpad 帳戶登錄。
從頂部水平導航器中,單擊 My > Changes,然後您可以找到您已提交的修補程序。
在此演示中,鏈接為 https://review.openstack.org/#/c/17673/。任何用戶都可以查看此修補程序。任何開發人員都可以給出注釋。

通常,這是提交修補程序的過程。但是如果某些開發人員添加了注釋並且您決定更改此分支,又該如何做呢?下面是一個選項:
打開一個終端並轉到 keystone 目錄。
通過 git checkout Bug1087674 轉到分支 Bug1087674。
對此分支進行進一步修改。
轉到 keystone 目錄。
運行 git commit -a –amend 命令。(不要運行 git commit -a,否則會有多個注釋提交給 Gerrit,建議不要這樣做。)
可能的話,請修改注釋。
運行 ctrl+o 命令,然後按 Enter 鍵並運行 ctrl+x。
運行 git review。

第二次提交此修補程序之後,鏈接 https://review.openstack.org/#/c/17673/ 中有兩個修補程序集,如圖 9 所示。

圖 9. 修補程序集的歷史記錄

此外,如果在您使用分支 Bug1087674 時主分支進行了更改,又會怎樣呢?下面是您可以執行的操作:
打開一個終端,並通過 git checkout master 轉到主分支。
使用 git pull origin master 更新該代碼。
通過 git checkout Bug1087674 切換回此分支。
通過 git rebase -i master 重構該代碼。
如果沒有沖突,則運行 git commit -a –amend 命令並運行 git review。
如果發生沖突,那麼終端會顯示有沖突的文件。
您還可以在 Eclipse 中查找沖突,因為有沖突的文件都標有紅色標記。
手動修復這些沖突。
繼續重構,git rebase —continue。
重構成功之後,運行 git commit -a –amend 命令和 git review。

7. 怎樣閱讀Linux源代碼

聽我的就是,問那麼多幹嘛,我在你身邊,你還走錯路!跟著我!不能給你幸福是我的錯,但誰讓你不幸福,我TMD去砍了他 查看文章
如何閱讀linux源代碼2007-09-01 14:04著linux的逐步普及,現在有不少人對於Linux的安裝及設置已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入了解Linux的也越來越多。而要想深入了解Linux,就需要閱讀和分析linux內核的源代碼。
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。另外還可以從互連網上下載,解壓縮後文件一般也都位於linux目錄下。內核源代碼有很多版本,目前最新的穩定版是2.2.14。
許多人對於閱讀Linux內核有一種恐懼感,其實大可不必。當然,象Linux內核這樣大而復雜的系統代碼,閱讀起來確實有很多困難,但是也不象想像的那麼高不可攀。只要有恆心,困難都是可以克服的。也不用擔心水平不夠的問題,事實上,有很多事情我們不都是從不會到會,邊干邊學的嗎?
任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對於Linux 內核源代碼的閱讀也同樣如此。下面我就把自己閱讀內核源代碼的一點經驗介紹一下,最後介紹Window平台下的一種閱讀工具。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於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 此目錄包含已建好可動態載入的模塊。

void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);

fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。
scripts此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。
清楚了源代碼的結構組成後就可以著手閱讀。對於閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是分模塊進行。其實他們之間不是絕對的,而是經常結合在一起進行。對於Linux源代碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平台為例):
./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而對於象內存管理等部分,則可以單獨拿出來進行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然後進行專題閱讀,如進程部分,內存管理部分等。在每個功能函數內部應該一步步來。實際上這是一個反復的過程,不可能讀一遍就理解。
俗話說:「工欲善其事,必先利其器」。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!

8. 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的啟動順序一步步來閱讀;對於像內存管理部分,可以單獨拿出來進行閱讀分析。實際上這是一個反復的過程,不可能讀一遍就理解。

9. 怎麼才能背過linux源碼

每天背五個函數。我背了3年多,背完了。現在linux任何問題,記住是任何問題,都難不倒我了。

10. 哪裡可以下載Linux系統的的源代碼編譯要多久編譯安裝的比直接安裝的性能高多少

源代碼從 https://www.kernel.org 取。

編譯的時間因人而異,也因系統不同而異,除了特別熟悉的,大多數人都要用幾個小時。一個是配置的時候要閱讀很多幫助信息,這要花很多時間,另一個就是編譯本身也需要很長的時間。

編譯的性能取決於你的配置。你對自己的機器的硬體了解得准確,配置的時候把不需要的選項都去掉;你對自己的軟體目標比較明確,該要的選項都選擇進來,這樣得到的內核性能自然會好。要是上述兩條做不到,其結果可能還不如直接安裝的內核好。

閱讀全文

與linux多久可以看完源碼相關的資料

熱點內容
三個外國妹子上山碰到三個鬼電影 瀏覽:138
鐵雨3迅雷下載 在線播放 瀏覽:67
python庫文件下載 瀏覽:131
兔老大電影 瀏覽:210
單片機實驗鍵盤和數碼 瀏覽:546
免費投屏電影網 瀏覽:880
甘肅酒泉發票伺服器地址 瀏覽:357
程序員專用詩集 瀏覽:209
微信租車系統源碼 瀏覽:984
中國抗日狙擊手電筒影 瀏覽:420
千王之王2000百度網盤資源 瀏覽:515
phpsocketepoll 瀏覽:726
小孩和熊的電影 瀏覽:241
python寫網頁界面的框架 瀏覽:6
當通過ssh遠程連接彈性雲伺服器時 瀏覽:655
12306哪個app 瀏覽:680
免費網站電視劇電影全免費在線觀看 瀏覽:737
如何快速清除app廣告 瀏覽:716
單片機按鍵外部中斷 瀏覽:560
單片機的usb供電 瀏覽:256