導航:首頁 > 操作系統 > linux代碼風格

linux代碼風格

發布時間:2022-06-30 17:14:31

① 如何參與linux 內核開發

如何參與Linux內核開發
---------------------

這是一篇將如何參與Linux內核開發的相關問題一網打盡的終極秘笈。它將指導你
成為一名Linux內核開發者,並且學會如何同Linux內核開發社區合作。它盡可能不
包括任何關於內核編程的技術細節,但會給你指引一條獲得這些知識的正確途徑。

如果這篇文章中的任何內容不再適用,請給文末列出的文件維護者發送補丁。

入門
----

你想了解如何成為一名Linux內核開發者?或者老闆吩咐你「給這個設備寫個Linux
驅動程序」?這篇文章的目的就是教會你達成這些目標的全部訣竅,它將描述你需
要經過的流程以及給出如何同內核社區合作的一些提示。它還將試圖解釋內核社區
為何這樣運作。

Linux內核大部分是由C語言寫成的,一些體系結構相關的代碼用到了匯編語言。要
參與內核開發,你必須精通C語言。除非你想為某個架構開發底層代碼,否則你並
不需要了解(任何體系結構的)匯編語言。下面列舉的書籍雖然不能替代扎實的C
語言教育和多年的開發經驗,但如果需要的話,做為參考還是不錯的:
- "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
《C程序設計語言(第2版·新版)》(徐寶文 李志 譯)[機械工業出版社]
- "Practical C Programming" by Steve Oualline [O'Reilly]
《實用C語言編程(第三版)》(郭大海 譯)[中國電力出版社]
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
《C語言參考手冊(原書第5版)》(邱仲潘 等譯)[機械工業出版社]

Linux內核使用GNU C和GNU工具鏈開發。雖然它遵循ISO C89標准,但也用到了一些
標准中沒有定義的擴展。內核是自給自足的C環境,不依賴於標准C庫的支持,所以
並不支持C標准中的部分定義。比如long long類型的大數除法和浮點運算就不允許
使用。有時候確實很難弄清楚內核對工具鏈的要求和它所使用的擴展,不幸的是目
前還沒有明確的參考資料可以解釋它們。請查閱gcc信息頁(使用「info gcc」命令
顯示)獲得一些這方面信息。

請記住你是在學習怎麼和已經存在的開發社區打交道。它由一群形形色色的人組成,
他們對代碼、風格和過程有著很高的標准。這些標準是在長期實踐中總結出來的,
適應於地理上分散的大型開發團隊。它們已經被很好得整理成檔,建議你在開發
之前盡可能多的學習這些標准,而不要期望別人來適應你或者你公司的行為方式。

法律問題
--------

Linux內核源代碼都是在GPL(通用公共許可證)的保護下發布的。要了解這種許可
的細節請查看源代碼主目錄下的COPYING文件。如果你對它還有更深入問題請聯系
律師,而不要在Linux內核郵件組上提問。因為郵件組里的人並不是律師,不要期
望他們的話有法律效力。

對於GPL的常見問題和解答,請訪問以下鏈接:
http://www.gnu.org/licenses/gpl-faq.html

文檔
----

Linux內核代碼中包含有大量的文檔。這些文檔對於學習如何與內核社區互動有著
不可估量的價值。當一個新的功能被加入內核,最好把解釋如何使用這個功能的文
檔也放進內核。當內核的改動導致面向用戶空間的介面發生變化時,最好將相關信
息或手冊頁(manpages)的補丁發到[email protected],以向手冊頁(manpages)
的維護者解釋這些變化。

以下是內核代碼中需要閱讀的文檔:
README
文件簡要介紹了Linux內核的背景,並且描述了如何配置和編譯內核。內核的
新用戶應該從這里開始。

Documentation/Changes
文件給出了用來編譯和使用內核所需要的最小軟體包列表。

Documentation/CodingStyle
描述Linux內核的代碼風格和理由。所有新代碼需要遵守這篇文檔中定義的規
范。大多數維護者只會接收符合規定的補丁,很多人也只會幫忙檢查符合風格
的代碼。

Documentation/SubmittingPatches
Documentation/SubmittingDrivers
這兩份文檔明確描述如何創建和發送補丁,其中包括(但不僅限於):
- 郵件內容
- 郵件格式
- 選擇收件人
遵守這些規定並不能保證提交成功(因為所有補丁需要通過嚴格的內容和風格
審查),但是忽視他們幾乎就意味著失敗。

其他關於如何正確地生成補丁的優秀文檔包括:
"The Perfect Patch"
http://userweb.kernel.org/~akpm/stuff/tpp.txt
"Linux kernel patch submission format"
http://linux.yyz.us/patch-format.html

Documentation/stable_api_nonsense.txt
論證內核為什麼特意不包括穩定的內核內部API,也就是說不包括像這樣的特
性:
- 子系統中間層(為了兼容性?)
- 在不同操作系統間易於移植的驅動程序
- 減緩(甚至阻止)內核代碼的快速變化
這篇文檔對於理解Linux的開發哲學至關重要。對於將開發平台從其他操作系
統轉移到Linux的人來說也很重要。

Documentation/SecurityBugs
如果你認為自己發現了Linux內核的安全性問題,請根據這篇文檔中的步驟來
提醒其他內核開發者並幫助解決這個問題。

Documentation/ManagementStyle
描述內核維護者的工作方法及其共有特點。這對於剛剛接觸內核開發(或者對
它感到好奇)的人來說很重要,因為它解釋了很多對於內核維護者獨特行為的
普遍誤解與迷惑。

Documentation/stable_kernel_rules.txt
解釋了穩定版內核發布的規則,以及如何將改動放入這些版本的步驟。

Documentation/kernel-docs.txt
有助於內核開發的外部文檔列表。如果你在內核自帶的文檔中沒有找到你想找
的內容,可以查看這些文檔。

Documentation/applying-patches.txt
關於補丁是什麼以及如何將它打在不同內核開發分支上的好介紹

內核還擁有大量從代碼自動生成的文檔。它包含內核內部API的全面介紹以及如何
妥善處理加鎖的規則。生成的文檔會放在 Documentation/DocBook/目錄下。在內
源碼的主目錄中使用以下不同命令將會分別生成pdf、Postscript、HTML和手冊
頁等不同格式的文檔:
make pdfdocs
make psdocs
make htmldocs
make mandocs

如何成為內核開發者
------------------
如果你對Linux內核開發一無所知,你應該訪問「Linux內核新手」計劃:
http://kernelnewbies.org
它擁有一個可以問各種最基本的內核開發問題的郵件列表(在提問之前一定要記得
查找已往的郵件,確認是否有人已經回答過相同的問題)。它還擁有一個可以獲得
實時反饋的IRC聊天頻道,以及大量對於學習Linux內核開發相當有幫助的文檔。

網站簡要介紹了源代碼組織結構、子系統劃分以及目前正在進行的項目(包括內核
中的和單獨維護的)。它還提供了一些基本的幫助信息,比如如何編譯內核和打補
丁。

如果你想加入內核開發社區並協助完成一些任務,卻找不到從哪裡開始,可以訪問
「Linux內核房管員」計劃:
http://kernelnewbies.org/KernelJanitors
這是極佳的起點。它提供一個相對簡單的任務列表,列出內核代碼中需要被重新
整理或者改正的地方。通過和負責這個計劃的開發者們一同工作,你會學到將補丁
集成進內核的基本原理。如果還沒有決定下一步要做什麼的話,你還可能會得到方
向性的指點。

如果你已經有一些現成的代碼想要放到內核中,但是需要一些幫助來使它們擁有正
確的格式。請訪問「內核導師」計劃。這個計劃就是用來幫助你完成這個目標的。它
是一個郵件列表,地址如下:
http://selenic.com/mailman/listinfo/kernel-mentors

在真正動手修改內核代碼之前,理解要修改的代碼如何運作是必需的。要達到這個
目的,沒什麼辦法比直接讀代碼更有效了(大多數花招都會有相應的注釋),而且
一些特製的工具還可以提供幫助。例如,「Linux代碼交叉引用」項目就是一個值得
特別推薦的幫助工具,它將源代碼顯示在有編目和索引的網頁上。其中一個更新及
時的內核源碼庫,可以通過以下地址訪問:
http://sosdg.org/~coywolf/lxr/

開發流程
--------

目前Linux內核開發流程包括幾個「主內核分支」和很多子系統相關的內核分支。這
些分支包括:
- 2.6.x主內核源碼樹
- 2.6.x.y -stable內核源碼樹
- 2.6.x -git內核補丁集
- 2.6.x -mm內核補丁集
- 子系統相關的內核源碼樹和補丁集

2.6.x內核主源碼樹
-----------------
2.6.x內核是由Linus Torvalds(Linux的創造者)親自維護的。你可以在
kernel.org網站的pub/linux/kernel/v2.6/目錄下找到它。它的開發遵循以下步
驟:
- 每當一個新版本的內核被發布,為期兩周的集成窗口將被打開。在這段時間里
維護者可以向Linus提交大段的修改,通常這些修改已經被放到-mm內核中幾個
星期了。提交大量修改的首選方式是使用git工具(內核的代碼版本管理工具
,更多的信息可以在http://git.or.cz/獲取),不過使用普通補丁也是可以
的。
- 兩個星期以後-rc1版本內核發布。之後只有不包含可能影響整個內核穩定性的
新功能的補丁才可能被接受。請注意一個全新的驅動程序(或者文件系統)有
可能在-rc1後被接受是因為這樣的修改完全獨立,不會影響其他的代碼,所以
沒有造成內核退步的風險。在-rc1以後也可以用git向Linus提交補丁,不過所
有的補丁需要同時被發送到相應的公眾郵件列表以征詢意見。
- 當Linus認為當前的git源碼樹已經達到一個合理健全的狀態足以發布供人測試
時,一個新的-rc版本就會被發布。計劃是每周都發布新的-rc版本。
- 這個過程一直持續下去直到內核被認為達到足夠穩定的狀態,持續時間大概是
6個星期。
- 以下地址跟蹤了在每個-rc發布中發現的退步列表:
http://kernelnewbies.org/known_regressions

關於內核發布,值得一提的是Andrew Morton在linux-kernel郵件列表中如是說:
「沒有人知道新內核何時會被發布,因為發布是根據已知bug的情況來決定
的,而不是根據一個事先制定好的時間表。」

2.6.x.y -stable(穩定版)內核源碼樹
-----------------------------------
由4個數字組成的內核版本號說明此內核是-stable版本。它們包含基於2.6.x版本
內核的相對較小且至關重要的修補,這些修補針對安全性問題或者嚴重的內核退步。

這種版本的內核適用於那些期望獲得最新的穩定版內核並且不想參與測試開發版或
者實驗版的用戶。

如果沒有2.6.x.y版本內核存在,那麼最新的2.6.x版本內核就相當於是當前的穩定
版內核。

2.6.x.y版本由「穩定版」小組(郵件地址<[email protected]>)維護,一般隔周發
布新版本。

內核源碼中的Documentation/stable_kernel_rules.txt文件具體描述了可被穩定
版內核接受的修改類型以及發布的流程。

2.6.x -git補丁集
----------------
Linus的內核源碼樹的每日快照,這個源碼樹是由git工具管理的(由此得名)。這
些補丁通常每天更新以反映Linus的源碼樹的最新狀態。它們比-rc版本的內核源碼
樹更具試驗性質,因為這個補丁集是全自動生成的,沒有任何人來確認其是否真正
健全。

2.6.x -mm補丁集
---------------
這是由Andrew Morton維護的試驗性內核補丁集。Andrew將所有子系統的內核源碼
和補丁拼湊到一起,並且加入了大量從linux-kernel郵件列表中採集的補丁。這個
源碼樹是新功能和補丁的試煉場。當補丁在-mm補丁集里證明了其價值以後Andrew
或者相應子系統的維護者會將補丁發給Linus以便集成進主內核源碼樹。

在將所有新補丁發給Linus以集成到主內核源碼樹之前,我們非常鼓勵先把這些補
丁放在-mm版內核源碼樹中進行測試。

這些內核版本不適合在需要穩定運行的系統上運行,因為運行它們比運行任何其他
內核分支都更具有風險。

如果你想為內核開發進程提供幫助,請嘗試並使用這些內核版本,並在
linux-kernel郵件列表中提供反饋,告訴大家你遇到了問題還是一切正常。

通常-mm版補丁集不光包括這些額外的試驗性補丁,還包括發布時-git版主源碼樹
中的改動。

-mm版內核沒有固定的發布周期,但是通常在每兩個-rc版內核發布之間都會有若干
個-mm版內核發布(一般是1至3個)。

子系統相關內核源碼樹和補丁集
----------------------------
相當一部分內核子系統開發者會公開他們自己的開發源碼樹,以便其他人能了解內
核的不同領域正在發生的事情。如上所述,這些源碼樹會被集成到-mm版本內核中。

下面是目前可用的一些內核源碼樹的列表:
通過git管理的源碼樹:
- Kbuild開發源碼樹, Sam Ravnborg <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git

- ACPI開發源碼樹, Len Brown <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git

- 塊設備開發源碼樹, Jens Axboe <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git

- DRM開發源碼樹, Dave Airlie <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git

- ia64開發源碼樹, Tony Luck <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git

- ieee1394開發源碼樹, Jody McIntyre <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394.git

- infiniband開發源碼樹, Roland Dreier <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git

- libata開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git

- 網路驅動程序開發源碼樹, Jeff Garzik <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git

- pcmcia開發源碼樹, Dominik Brodowski <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git

- SCSI開發源碼樹, James Bottomley <[email protected]>
git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git

使用quilt管理的補丁集:
- USB, PCI, 驅動程序核心和I2C, Greg Kroah-Hartman <[email protected]>
kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
- x86-64, 部分i386, Andi Kleen <[email protected]>
ftp.firstfloor.org:/pub/ak/x86_64/quilt/

其他內核源碼樹可以在http://git.kernel.org的列表中和MAINTAINERS文件里
找到。

報告bug
-------

bugzilla.kernel.org是Linux內核開發者們用來跟蹤內核Bug的網站。我們鼓勵用
戶在這個工具中報告找到的所有bug。如何使用內核bugzilla的細節請訪問:
http://test.kernel.org/bugzilla/faq.html

內核源碼主目錄中的REPORTING-BUGS文件里有一個很好的模板。它指導用戶如何報
告可能的內核bug以及需要提供哪些信息來幫助內核開發者們找到問題的根源。

利用bug報告
-----------

練習內核開發技能的最好辦法就是修改其他人報告的bug。你不光可以幫助內核變
得更加穩定,還可以學會如何解決實際問題從而提高自己的技能,並且讓其他開發
者感受到你的存在。修改bug是贏得其他開發者贊譽的最好辦法,因為並不是很多
人都喜歡浪費時間去修改別人報告的bug。

要嘗試修改已知的bug,請訪問http://bugzilla.kernel.org網址。如果你想獲得
最新bug的通知,可以訂閱bugme-new郵件列表(只有新的bug報告會被寄到這里)
或者訂閱bugme-janitor郵件列表(所有bugzilla的變動都會被寄到這里)。

https://lists.linux-foundation.org/mailman/listinfo/bugme-new
https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors

郵件列表
--------

正如上面的文檔所描述,大多數的骨幹內核開發者都加入了Linux Kernel郵件列
表。如何訂閱和退訂列表的細節可以在這里找到:
http://vger.kernel.org/vger-lists.html#linux-kernel
網上很多地方都有這個郵件列表的存檔(archive)。可以使用搜索引擎來找到這些
存檔。比如:
http://dir.gmane.org/gmane.linux.kernel
在發信之前,我們強烈建議你先在存檔中搜索你想要討論的問題。很多已經被詳細
討論過的問題只在郵件列表的存檔中可以找到。

大多數內核子系統也有自己獨立的郵件列表來協調各自的開發工作。從
MAINTAINERS文件中可以找到不同話題對應的郵件列表。

很多郵件列表架設在kernel.org伺服器上。這些列表的信息可以在這里找到:
http://vger.kernel.org/vger-lists.html

在使用這些郵件列表時,請記住保持良好的行為習慣。下面的鏈接提供了與這些列
表(或任何其它郵件列表)交流的一些簡單規則,雖然內容有點濫竽充數。
http://www.albion.com/netiquette/

當有很多人回復你的郵件時,郵件的抄送列表會變得很長。請不要將任何人從抄送
列表中刪除,除非你有足夠的理由這么做。也不要只回復到郵件列表。請習慣於同
一封郵件接收兩次(一封來自發送者一封來自郵件列表),而不要試圖通過添加一
些奇特的郵件頭來解決這個問題,人們不會喜歡的。

記住保留你所回復內容的上下文和源頭。在你回復郵件的頂部保留「某某某說到……」
這幾行。將你的評論加在被引用的段落之間而不要放在郵件的頂部。

如果你在郵件中附帶補丁,請確認它們是可以直接閱讀的純文本(如
Documentation/SubmittingPatches文檔中所述)。內核開發者們不希望遇到附件
或者被壓縮了的補丁。只有這樣才能保證他們可以直接評論你的每行代碼。請確保
你使用的郵件發送程序不會修改空格和製表符。一個防範性的測試方法是先將郵件
發送給自己,然後自己嘗試是否可以順利地打上收到的補丁。如果測試不成功,請
調整或者更換你的郵件發送程序直到它正確工作為止。

總而言之,請尊重其他的郵件列表訂閱者。

② linux系統分為哪幾類

第一類:root(超級管理員),UID為0,這個用戶有極大的許可權,可以直接無視很多的限制,包括讀寫執行的許可權。

第二類:系統用戶,UID為1~499。一般是不會被登入的。

第三類就是普通用戶,UID范圍一般是500~65534。這類用戶的許可權會受到基本許可權的限制,也會受到來自管理員的限制。不過要注意nobody這個特殊的帳號,UID為65534,這個用戶的許可權會進一步的受到限制,一般用於實現來賓帳號。

當前市面上流行的Linux系統主要分為Readhat和Debian兩大系列,而android底層直接用linux原版內核。

一、Redhat系列

Redhat:主要是伺服器型Linux,商用收費;RHEL是Red Hat Enterprise Linux的縮寫。
CentOS:Redhat的100%復製版本,不收版權費用。

二、Debian系列
Debian:主要是桌面型Linux,代表為Ubuntu。這只是簡單的概括,專更詳細的分類總結及Linux知識介紹和應用可以看看相屬關書籍及資料,推薦一本Linux書籍《Linux就該這么學》。

CentOS:可靠的伺服器發行版。是一個重新編譯可安裝的Red Hat Enterprise Linux(RHEL)代碼,並提供及時的安全更新的所有套裝軟體升級為目標的社區項目。目前很多互聯網企業在用的發行版本。

Red Hat(紅帽):培訓、學習、應用、知名度比較高的Linux發行版本。對硬體兼容性來說也比較不錯,版本更新很快,對新硬體和新技術支持較好。Red Hat的開放源碼模式提供跨物理、虛擬和雲端環境的企業運算解決方案,以幫助企業降低成本並提升效能、穩定性與安全性。

Ubuntu:流行的桌面Linux發行版。朝著發展一種「易用和免費」的桌面操作系統做出了極大的努力和貢獻,能夠與市場上任何一款個人操作系統相競爭。Ubuntu的優勢是固定的發布周期和支持期限、易於初學者學習、具有豐富的文檔。

SUSE:擁有讓用戶滿意的漂亮的桌面環境,優秀的系統 管理工具,同時為那些購買盒裝版的用戶提供最好的印刷品與任何可用的文檔。

Debian:優勢是非常穩定、擁有卓越的質量控制、超過20,000數量的軟體、比任何其他的Linux發行支持更多的處理器架構。

③ 如何規范Linux系統代碼風格

Linux系統里 提高了一個軟體: indent, 這個軟體自動幫你實現代碼風格,比VC6.0 還容易多了。
比如 編寫的源文件:lottery.c
在終端里輸入: indent lottery.c 和 indent -kr lottery.c 兩種風格, 試試看就知道 只是有一點不同而已。
我們多數寫程序的人可能都是學的Kernighan & Ritchie代碼風格

④ 風格怎麼設置,代碼在哪輸入阿

cygwin 在win中開發linux程序很多用windows的朋友不習慣於用linux的開發環境。雖然很樂意嘗試一下,但是往往怕 linux系統打亂了自己的正常生活:1〉裝linux系統把windows系統給搞壞了,導致自己無法正常生活;2>linux開發上手太難,寫出第一個helloworld不亞於java的難度,環境配置摸不著頭腦。對於此,我的看法是:路不管平還是陡,終歸你要走的,如果你願意投入到linux開發的社群中來,不會安裝linux系統,不會配置工作環境是不能想像的。(事實上,確實要了解很多東西的原理,不然很難排錯:諸如,硬碟引導器的引導原理、分區結構原理及linux分區結構和文件系統、環境變數的設置、種類繁多的壓縮包安裝包的解壓安裝方法、用戶管理許可權管理等常用命令、以至於驅動安裝系統中文化等等異常瑣碎的東東)。

本文試圖跳過這個難走的步驟,啟用一個win環境下的linux模擬器(和linux下面的命令行開發環境基本一致),用短短的20分鍾的時間,教你做出一個純正的linux下gcc編譯的helloworld。就象是買點心前先嘗嘗味道,不也是一件很愉快的事情么?(註:cygwin事實上不僅有此模擬功能,它也是移植unix<-->win程序的一個很有效的工具,也有人用它來做嵌入式系統開發)

一、cygwin是什麼?
這個問題你最好google一下"cygwin的歷史",或許能夠獲得更為詳盡的答案。簡而言之,cygwin是一個在windows平台上運行的 linux模擬環境,是cygnus solutions公司開發的自由軟體(該公司開發了很多好東西,著名的還有eCos,不過現已被Redhat收購)。插一句廢話,很多朋友不明白 linux和unix的區別和聯系,在此也簡要介紹一下。UNIX是一個注冊商標,是要滿足一大堆條件並且支付可觀費用才能夠被授權使用的一個操作系統; linux是unix的克隆版本,是由其創始人Linus和諸多世界知名的黑客手工打造的一個操作系統。為什麼linux和unix之間有很多軟體可以很輕松的移植?因為linux也滿足POSIX規范,所以在運行機制上跟unix相近。
以下引用網上的一段話(出處:
http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx
http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx),
用於說明cygwin的工作機制:cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成並解釋win32的目標文件。然後,他們要把這些工具移植到windows平台上去。一種方案是基於win32 api對這些工具的源代碼進行大幅修改,這樣做顯然需要大量工作。因此,他們採取了一種不同的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在裡面,也就是說,他們基於 win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主機上的交叉編譯器來生成可以在 windows平台上運行的工具集。以這些移植到windows平台上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟體移植到windows上來。這樣,在windows平台上運行bash和開發工具、用戶工具,感覺好像在unix上工作。關於cygwin實現的更詳細描述,請參考
http://cygwin.com/cygwin-ug-net/highlights.html
http://cygwin.com/cygwin-ug-net/highlights.html

二、cygwin的安裝。
cygwin的安裝文件很容易通過google找到。目前國內的網站上有"網路安裝版"和"本地安裝版"兩種。標準的發行版應該是 網路安裝版。兩者並無大不同,下面介紹一下安裝的過程。

step1. 下載後,點擊安裝文件(setup.exe)進行安裝,第一個畫面是GNU版權說明,點"下一步(N)—>",
進入安裝模式選擇畫面。

step2. 安裝模式有"Install from Internet"、"Download form Internet"、
"Install from Local Directory" 三種。"Install form Internet"就是直接從internet上裝

⑤ LINUX是什麼意思

什麼是Linux

Linux 通常被認為是一套操作系統,實際上它是一系列Linux內核基礎上開發的操作系統的總稱。

Linux 怎麼讀

對於Linux這個英文單詞,中國人的發音各式各樣,有的讀作[ˈlɪnɪks](」李尼克斯「),有的讀作[ˈlinju:ks](「李紐克斯」),有的讀作[ˈlɪnəks](「李呢克斯」)。官方給出的標准發音為['li:nэks],寫成中文就是「李呢克斯」。

其實我見過很多人,有很多不同的讀法,其實不用過度糾結讀音問題。

Linux 的由來

要說Linux必須先說說Unix, Linux誕生之前,先有的Unix,因為Unix並非免費開源的,用必須買授權之類的,很少人承擔的起。

在1983年,理查德·斯托曼創建了一個自由軟體,類Unix,與POSIX兼容的操作系統為目標的GNU計劃。作為這個計劃其中的一部分,他又寫了GNU通用公共許可證(GPL)。

GNU計劃發起後,有很多支持者,所以在這期間產生了許多非常棒的軟體,但遺憾的是,一直沒有一個比較完美的操作系統出現。直到1991年,芬蘭大學生林納斯•本納第克特•托瓦茲(Linus Benedict Torvalds)基於興趣開發了一個類Unix操作系統,一經發布便得到了廣大愛好者的追捧,這個系統就是Linux。

名稱的由來

Linus Torvalds本要把他的發時叫做Freax——「fread」,「free」和「x」(暗指Unix)的合成詞。在開發系統的前半年裡,他把文件以文件名「Freax」存儲。Torvalds考慮過Linux這個名字,但是因為覺得它過於自我本位而放棄了使用它。

為便於開發,在1991年9月,他把那些文件上傳到了赫爾辛基工業大學(HUT)的FTP伺服器(ftp.funet.fi)。Torvalds在HUT負責管理那個伺服器的同事Ari Lemmke,覺得「Freax」這個名字不是很好,就在不咨詢Torvalds的情況下,把項目的名字改成了「Linux」。但是之後,Torvalds也同意「Linux」這個名字了:「經過多次討論,他承認Linux這個名字更好。在0.01版本Linux的源代碼的makefile里仍然使用『Freax'這個名字,在之後『Linux'這個名字才被使用。所以,Linux這個名字並不是預先想好的,只是它被廣泛接受了而已

Linux吉祥物

1996年,Torvalds為Linux選定了企鵝作為它的吉祥物,這就是很多時候看Linux相關書籍的時候,會有個企鵝的原因了

Linux操作系統

以上就是對Linux概念的簡介。溫故而知新,我最近打算開始將Linux基本指令開始重新梳理一下,如果你也想跟我一塊兒回顧下,別忘了關注下,咱們一起回憶,一起進步。

⑥ 誰知道Linux的簡介

Linux系統簡介

什麼是Linux
簡單地說,Linux是一套免費使用和自由傳播的類Unix操作系統,它主要用於基於Intel x86系列CPU的計算機上。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix兼容產品。
Linux最早由一位名叫Linus Torvalds的計算機愛好者開發,他的目的是設計一個代替Minix的操作系統,這個操作系統可用於386、486或奔騰處理器的個人計算機上,並且具有Unix操作系統的全部功能。

Linux以它的高效性和靈活性著稱。它能夠在個人計算機上實現全部的Unix特性,具有多任務、多用戶的能力。Linux可在GNU(「不是UNIX」工程的縮寫)公共許可許可權下免費獲得,是一個符合POSIX標準的操作系統。Linux操作系統軟體包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟體。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。

Linux之所以受到廣大計算機愛好者的喜愛,主要原因有兩個,一是它屬於自由軟體,用戶不用支付任何費用就可以獲得它和它的源代碼,並且可以根據自己的需要對它進行必要的修改和無約束地繼續傳播。另一個原因是,它具有Unix的全部功能,任何使用Unix操作系統或想要學習Unix操作系統的人都可以從Linux中獲益。

2. Linux系統的主要特點
開放性:指系統遵循世界標准規范,特別是遵循開放系統互連(OSI)國際標准。
多用戶:是指系統資源可以被不同用戶使用,每個用戶對自己的資源(例如:文件、設備)有特定的許可權,互不影響。
多任務:它是指計算機同時執行多個程序,而且各個程序的運行互相獨立。
良好的用戶界面 :Linux向用戶提供了兩種界面:用戶界面和系統調用。Linux還為用戶提供了圖形用戶界面。它利用滑鼠、菜單、窗口、滾動條等設施,給用戶呈現一個直觀、易操作、交互性強的友好的圖形化界面。
設備獨立性:是指操作系統把所有外部設備統一當作成文件來看待,只要安裝它們的驅動程序,任何用戶都可以象使用文件一樣,操縱、使用這些設備,而不必知道它們的具體存在形式。 Linux是具有設備獨立性的操作系統,它的內核具有高度適應能力
提供了豐富的網路功能:完善的內置網路是Linux一大特點。
可靠的安全系統:Linux採取了許多安全技術措施,包括對讀、寫控制、帶保護的子系統、審計跟蹤、核心授權等,這為網路多用戶環境中的用戶提供了必要的安全保障。
良好的可移植性:是指將操作系統從一個平台轉移到另一個平台使它仍然能按其自身的方式運行的能力。Linux是一種可移植的操作系統,能夠在從微型計算機到大型計算機的任何環境中和任何平台上運行。

3 LINUX的組成
LINUX的內核:內核是系統的核心,是運行程序和管理 像磁碟和列印機等硬體設備的核心程序。
LINUX SHELL: Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。
LINUX文件系統: Linux文件系統是文件存放在磁碟等存儲設備上的組織方法。Linux能支持多種目前滸的文件系統,如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。
LINUX應用系統:標準的Linux系統都有一整套稱為應用程序的程序集,包括文本編輯器、編程語言、X Window、辦公套件、Internet工具、資料庫等。

⑦ Linux 內核的 C 代碼風格是怎樣的

如果你有一定的c語言基礎並且對linux的文件系統比較了解的話,可以直接看linux的內核源碼分析

⑧ 什麼是linux格式

linux是一個操作系統,如果你是指文件系統格式的話linux通常使用的文件系統格式為ext2或ext3

閱讀全文

與linux代碼風格相關的資料

熱點內容
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261
蛋糕店用什麼樣的app 瀏覽:877
長安銀行信用卡app怎麼取現 瀏覽:635
dos命令cmd命令的 瀏覽:226
阿里雲存檔視頻文件的伺服器 瀏覽:194
ftp修改文件許可權命令 瀏覽:491