新聞中心
Linux是一款開源操作系統(tǒng),其源代碼也是開源的。如果你想了解Linux的底層實(shí)現(xiàn),或者想為Linux做出貢獻(xiàn),那么獲取Linux源碼絕對是必不可少的步驟。但對于沒有下載過Linux源碼的人來說,可能并不知道該怎么下載,下面我們來介紹一下獲取Linux源碼的方法。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、岑溪網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、岑溪網(wǎng)絡(luò)營銷、岑溪企業(yè)策劃、岑溪品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供岑溪建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
方法一:通過官方網(wǎng)站下載
官方網(wǎng)站是獲取Linux源碼最合適的地方。Linux的開發(fā)者會將Linux的最新源碼上傳到官方網(wǎng)站,并提供下載。在Linux官網(wǎng)上,你可以找到所有主流Linux發(fā)行版的源碼。為了找到需要的版本的源碼,你需要知道你的版本號和架構(gòu)名字。Linux的版本號包括內(nèi)核版本和發(fā)行版版本,一般都標(biāo)識在發(fā)行版的名稱中。例如,Ubuntu 18.04的內(nèi)核版本是4.15.0-29-generic,發(fā)行版版本是18.04.1。
下載的步驟如下:
1. 找到官方網(wǎng)站:https://www.kernel.org/
2. 點(diǎn)擊“Download”選項(xiàng),可以看到多個版本的Linux內(nèi)核源碼,找到對應(yīng)的版本。
3. 下載對應(yīng)的tar.gz文件,這個文件包括了Linux的全部源碼。
方法二:通過Git下載
Git是一款很流行的版本控制軟件,也可以用來下載Linux源碼。Git下載Linux源碼的好處是可以進(jìn)行增量式下載,也就是只下載更改過的代碼,避免一次性下載全部代碼所需的時間。以下是獲取Linux源碼的步驟:
1. 找到官方倉庫:https://git.kernel.org/
2. 在該倉庫的頁面上,你可以找到Linux內(nèi)核的Git地址,例如https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git。
3. 在終端或命令提示符中,輸入以下命令,將源碼庫克隆到本地:
“`
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
“`
這會將內(nèi)核源碼克隆到當(dāng)前目錄中的linux文件夾中。
不同版本的Linux內(nèi)核有不同的Git地址,如果你想下載特定版本的內(nèi)核源碼,請通過Google搜索或其他方式找到正確的倉庫地址。
方法三:通過發(fā)行版下載
Linux內(nèi)核源碼也可以從發(fā)行版的倉庫下載。發(fā)行版提供的源碼一般已經(jīng)經(jīng)過了調(diào)整和優(yōu)化,可以直接編譯運(yùn)行,但是可能不是最新的版本。以下是通過發(fā)行版下載Linux源碼的步驟:
1. 打開終端或命令提示符,輸入以下命令,查找發(fā)行版的源碼包:
“`
apt-cache search linux-source
“`
(注:這里以Debian/Ubuntu為例)
2. 選擇需要的版本號和架構(gòu)名,然后下載相應(yīng)的源碼包:
“`
sudo apt-get install linux-source-4.15.0
“`
這會將內(nèi)核源碼包下載到當(dāng)前目錄中。
以上三種方法都可以幫助你獲取到Linux內(nèi)核源碼,選擇哪一種方法取決于你的需求和習(xí)慣。請注意,Linux內(nèi)核源碼包比較大,通常在幾百M(fèi)B左右,因此下載過程可能需要一些時間,耐心等待即可。獲取到源碼后,你可以開始深入學(xué)習(xí)Linux內(nèi)核的實(shí)現(xiàn),或者為Linux開發(fā)做出貢獻(xiàn)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220Linux操作系統(tǒng)的源代碼?
Linux是一個開放的,自由的類Unix操作系統(tǒng),它的源代碼是公開的, 各個版本的Linux,包括從內(nèi)核到許許多多的應(yīng)用程序的源代碼, 以及可執(zhí)行文件都可以免費(fèi)從互聯(lián)網(wǎng)上下載。
你也可以通過光盤得到Linux系統(tǒng),和一般的軟件不同的是, 你可以合法的和你的朋友分享Linux光盤。很顯然Linux光盤的價格不會很高, 之一,因?yàn)槟憧梢悦赓M(fèi)從網(wǎng)上下載;第二,你可以和你的朋友合伙湊錢買一套Linux光盤, 再和你的朋友分享使用。
Linux和一般的軟件不同,是可以和你的朋友分享的。 舉個例子來說:
如果朋友家有張非常漂亮的窗子,但是這窗子是95牌的, 那么你仿制是違法的,如果這窗子是X牌的,或者說牌子是GPL, 那么你仿制就不違法。如果你不想違法,但又想要漂亮的窗子, 答案是選擇自由軟件。選擇Linux。
Linux準(zhǔn)確的說,是一個系統(tǒng)內(nèi)核,它是最初在91年, 由芬蘭的了不起的學(xué)生Linus Torvalds發(fā)起, 接著又有全世界的志愿者加入進(jìn)來開發(fā)的。
現(xiàn)在有一些軟件公司在做Linux的生意, 著名的有RedHat,SuSE以及Caldera等等, 這些公司發(fā)布自己的基于Linux內(nèi)核的一整套的Linux系統(tǒng): 這些整套的系統(tǒng)通常包括有:一個C語言及C++編譯器,Perl腳本解釋程序, 外殼Shell,圖形用戶界面X窗口系統(tǒng),包括有X Server以及眾多的應(yīng)用程序等等。
這些整套的Linux系統(tǒng)按照習(xí)慣叫做Linux發(fā)布(distribution)。 目前使用最廣泛的Linux發(fā)布是RedHat公司的RedHat Linux。 以前使用廣泛的Slackware,現(xiàn)在也還有許多人在使用, 我自己的之一個Linux系統(tǒng)就是Slackware,現(xiàn)在我玩的是Debian, Debian和其他的Linux發(fā)布的不同之處在于:Debian是完全由志愿者開發(fā)的, 不像RedHat和SuSE,是由軟件公司所支持的。
RedHat是使用最廣泛的Linux發(fā)布,并且RedHat公司現(xiàn)在得到了Netscape, 以及Intel的支持,前景看好,根據(jù)一般的看法Redhat也是最容易上手的Linux發(fā)布。
SLackware和RedHat相比要稍微復(fù)雜一些,這主要是指軟件的安裝方面, 由于RedHat使用rpm打包系統(tǒng),安裝新軟件簡單到只要一行命令即可。 而Slackware往往要從源代碼重新編譯,稍微費(fèi)事一些。
SuSE也是基于rpm打包系統(tǒng),SuSE的特別之處在于它對X窗口系統(tǒng)的支持非常好, SuSE的吉祥物是一只綠色的蜥蜴,非??蓯?。
Debian基于自己的Deb格式的打包系統(tǒng),但是它也可以安裝rpm軟件包。
Linux可以運(yùn)行在DEC公司的Alpha機(jī)上,也可以運(yùn)行在Sun公司的Sparc機(jī)器上。 當(dāng)然也可以運(yùn)行在Intel公司的386以上的機(jī)器上。 編寫的好的源代碼可以不經(jīng)修改的在各種不同的Linux平臺上直接編譯安裝運(yùn)行, 但是顯然,不同的硬件平臺之間的可執(zhí)行文件是不兼容的。 但是一個特別針對Intel機(jī)器的rpm軟件包是可以輕易的在for Intel的RedHat,SuSE,Debian, 以及Slackware上安裝運(yùn)行起來的。
RedHat,SuSE,Slackware以及Debian等各個發(fā)布之間的另一個不同是, 它們都帶有自己的系統(tǒng)管理工具。 RedHat使用著名的控制面板+Linuxconf, Debian使用臭名昭著的dselect(為什么說臭名昭著?因?yàn)樗浅ky控制, 我自己只要有可能,就盡量不碰它) Slackware使用pkgtool, SuSE也有自己的管理工具。
Linux是一個開放的操作系統(tǒng),它的各個部分:內(nèi)核,應(yīng)用程序, 庫程序是有機(jī)的結(jié)合的。并不是固定的死死的,碰都不能碰。Linux的內(nèi)核的版本號是XX.XX.XX格式的,由三個數(shù)字組成, 之一個數(shù)字是主版本好,第三個數(shù)字是輔版本號,中間的數(shù)字如果是奇數(shù), 表示這是一個開發(fā)版的內(nèi)核,如果是偶數(shù),表示是一個相對穩(wěn)定的,可靠的內(nèi)核。 一般來講,除非你正在研究Linux內(nèi)核,或有特別的需要, 否則不要擺弄奇數(shù)版本的內(nèi)核。
今天演示的第三個部分是Linux下的軟件。常常有人抱怨Linux缺乏有效的軟件的支持, 這在一定情況下的確如此,但是另一方面也是我們對Linux了解太少, Linux平臺上現(xiàn)在已經(jīng)有了相當(dāng)多的應(yīng)用軟件。 并且Linux正在得到越來越多的廠家的支持。 這段時間炒的非?;鸬腛racle,Sybase等等大型數(shù)據(jù)庫的Linux版本就是一例。
Linux下不但有類似于PhotoShop的免費(fèi)的圖像編輯軟件:gimp, 還有免費(fèi)的類似于3DS的三維設(shè)計(jì)軟件:MoonLight。 并且所有這些軟件,你都可以得到源代碼。
Linux下的圖形用戶界面是基于X窗口系統(tǒng)的, 這也秉承了Linux的一貫傳統(tǒng):開放的,有機(jī)結(jié)合的。 XFree86只是圖形界面的服務(wù)器,上面可以運(yùn)行各種不同的窗口管理器, 現(xiàn)在著名的窗口管理器有AfterStep,WindowMaker,以及Enlightenment。 有的窗口管理器做得非常的漂亮,真是叫做不看不知道,一看嚇一跳。 另外,如果你不喜歡花哨的窗口管理器,你可以選擇wm2或者9wm, 它們只占用非常少的系統(tǒng)資源,我自己經(jīng)常使用的就是9wm。
有了X服務(wù)器和一個窗口管理器,你就有了圖形用戶界面。 你就可以運(yùn)行Gimp或者M(jìn)oonlight了,甚至你還可以運(yùn)行Doom和quake!
現(xiàn)在還有一批程序員正在為Linux開發(fā)免費(fèi)的,開放源代碼的紅色警報。
對Linux的一個最主要的批評是:Linux缺乏支持。 坦白的說,就我自己作為一個個人用戶來講,我覺得Linux的支持非常的好。 我曾經(jīng)在安裝Debian的時候遇到幾個問題, 到Debian的Mail List里發(fā)信詢問了一下,幾個小時后就得到了答案。
一般redhat 會自代源碼盤,你需要在linux下自己減壓縮后才可以看到.
參考資料:redhat光盤資料
linux 提示nm版本太低,怎么使用yum對其進(jìn)行升級,或者哪兒可以下載到源碼包
你可以安裝比較新的gcc來更新,我看centos 7.2下面有一個gcc-nm,與nm報的信息一樣:
$nm –version
GNU nm version 2.23.52.0.1-55.el
Copyright 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
$gcc-nm –version
GNU nm version 2.23.52.0.1-55.el
Copyright 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
也可以安裝 binutils.x86_64 : A GNU collection of binary utilities 試試,
yum install binutils 或者
yum update binutils
linux所有驅(qū)動都可以編譯成模塊嗎
linux下編譯運(yùn)行驅(qū)動
嵌入式linux下設(shè)備驅(qū)動的運(yùn)行和linux x86 pc下運(yùn)行設(shè)備驅(qū)動是類似的,由于手頭沒有嵌入式linux設(shè)備,先在vmware上的linux上學(xué)習(xí)驅(qū)動開發(fā)。
按照如下方法就可以成功編譯出hello world模塊驅(qū)動。
1、首先確定本機(jī)linux版本
怎么查看Linux的內(nèi)核kernel版本?
‘uname’是Linux/unix系統(tǒng)中用來查看系統(tǒng)信息的命令,適用于所有Linux發(fā)行版。配合使用’uname’參數(shù)可以查看當(dāng)前服務(wù)器內(nèi)核運(yùn)行的各個狀態(tài)。
#uname -a
Linux whh 3.5.0-19-generic #30-Ubuntu PTue Nov 13 17:49:53 UTC 2023 i686 i686 i686 GNU/Linux
只打印內(nèi)核版本,以及主要和次要版本:
#uname -r
3.5.0-19-generic
要打印系統(tǒng)的體系架構(gòu)類型,即的機(jī)器是32位還是64位,使用:
#uname -p
i686
/proc/version 文件也包含系統(tǒng)內(nèi)核信息:
# cat /proc/version
Linux version 3.5.0-19-generic(buildd@aatxe) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #30-UbuntuP Tue Nov 13 17:49:53 UTC 2023
發(fā)現(xiàn)自己的機(jī)器linux版本是:3.5.0-19-generic
2、下載機(jī)器內(nèi)核對應(yīng)linux源碼
到下面網(wǎng)站可以下載各個版本linux源碼
如我的機(jī)器3.5.0版本源碼下載地址為:
pub/linux/kernel/v3.x/linux-3.5.tar.bz2
下載完后,找一個路徑解壓,如我解壓到/linux-3.5/
然后很重要的一步是:執(zhí)行命令uname -r,可以看到Ubuntu的版本信息是3.5.0-19-generic
。進(jìn)入linux源碼目錄,編輯Makefile,將EXTRAVERSION = 修改為EXTRAVERSION= -19-generic。
這些都是要配置源碼的版本號與系統(tǒng)版本號,如果源碼版本號和系統(tǒng)版本號不一致,在加載模塊的時候會出現(xiàn)如下錯誤:inod: error inserting ‘hello.ko’: -1 Invalid module format。
原因很明確:編譯時用的hello.ko的kenerl 不是我的pc的kenerl版本。
執(zhí)行命令cp /boot/config-3.5.0-19-generic ./config,覆蓋原有配置文件。
進(jìn)入linux源碼目錄,執(zhí)行make menuconfig配置內(nèi)核,執(zhí)行make編譯內(nèi)核。
3、寫一個最簡單的linux驅(qū)動代碼hello.c
/*======================================================================
Asimple kernel module: “hello world”
======================================================================*/
#include
#include
MODULE_LICENSE(“zeroboundaryBSD/GPL”);
static int hello_init(void)
{
printk(KERN_INFO”Hello World enter\n”);
return0;
}
static void hello_exit(void)
{
printk(KERN_INFO”Hello World exit\n “);
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR(“zeroboundary”);
MODULE_DESCRIPTION(“A simple HelloWorld Module”);
MODULE_ALIAS(“a simplestmodule”);
4、寫一個Makefile對源碼進(jìn)行編譯
KERN_DIR = /linux-3.5
all:
make-C $(KERN_DIR) M=`pwd` modules
clean:
make-C $(KERN_DIR) M=`pwd` clean
obj-m += hello.o
5、模塊加載卸載測試
inod hello.ko
rmmod hello.ko
然后dmesg|tail就可以看見結(jié)果了
最后,再次編譯驅(qū)動程序hello.c得到hello.ko。執(zhí)行inod ./hello.ko,即可正確insert模塊。
使用inod hello.ko 將該Module加入內(nèi)核中。在這里需要注意的是要用 su 命令切換到root用戶,否則會顯示如下的錯誤:inod: error inserting ‘hello.ko’: -1 Operation not permitted
內(nèi)核模塊版本信息的命令為modinfo hello.ko
通過lod命令可以查看驅(qū)動是否成功加載到內(nèi)核中
通過inod命令加載剛編譯成功的time.ko模塊后,似乎系統(tǒng)沒有反應(yīng),也沒看到打印信息。而事實(shí)上,內(nèi)核模塊的打印信息一般不會打印在終端上。驅(qū)動的打印都在內(nèi)核日志中,我們可以使用dmesg命令查看內(nèi)核日志信息。dmesg|tail
可能還會遇到這種問題inod: error inserting ‘hello.ko’: -1 Invalid module format
用dmesg|tail查看內(nèi)核日志詳細(xì)錯誤
disagrees about version of symbolmodule_layout,詳細(xì)看這里。
在X86上我的辦法是:
make -C/usr/src/linux-headers-3.5.0-19-generic SUBDIRS=$PWD modules
關(guān)于linux源碼下載的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營銷推廣等一站式服務(wù)。
本文題目:輕松獲取Linux源碼:下載方法一覽(linux源碼下載)
本文路徑:http://m.fisionsoft.com.cn/article/cosshih.html


咨詢
建站咨詢
