實戰linux編程精髓
A. 如何學習linux操作系統
1.1 初學者入門首選-redhat系列
在學習redhat系列linux之前,首先要了解以下redhat linux各個發行版本之間的關系。
1.Red Hat Linux
Red Hat Linux是redhat最早發行的個人版本的linux, 其1.0版本於1994年11月3日發行。雖然其歷史不及其它linux發行版本悠久,但比起很多的Linux發行套件,Red Hat 的歷史悠久得多。自從Red Hat 9.0版本發布後,RedHat 公司就不再開發桌面版的 Linux發行套件,Red Hat Linux停止了開發,而將全部力量集中在伺服器版的開發上,也就是 Red Hat Enterprise Linux 版。2004年4月30日,Red Hat公司正式停止對Red Hat 9.0版本的支持,標志著Red Hat Linux的正式完結。原本的桌面版Red Hat Linux發行套件則與來自開源社區的 Fedora進行合並,成為 Fedora Core 發行版本。
目前Red Hat分為兩個系列:由Red Hat公司提供收費技術支持和更新的Red Hat Enterprise Linux,以及由社區開發的免費的Fedora Core。
2.Fedora Core
Fedora Core(縮寫為FC)被紅帽公司定位為新技術的實驗場地,許多新的技術都會在 FC 中檢驗,如果穩定的話紅帽公司則會考慮加入 Red Hat Enterprise Linux 中。
Fedora Core 1發布於2003年年末,而FC的定位便是桌面用戶。FC提供了最新的軟體包,同時,它的版本更新周期也非常短,僅6個月。由於版本更新頻繁,性能和穩定性得不到保證,因此,一般在伺服器上不推薦採用Fedora Core。
其實可以這么認為,Fedora就是Red Hat發行Red Hat企業版linux的一個實驗版本,以用戶做測試,為Red Hat企業版發布奠定基礎。
3.Red Hat Enterprise Linux
Red Hat Enterprise Linux(縮寫為RHEL,Red Hat的企業版)。Red Hat現在主要做伺服器版的linux開發,在版本上注重了性能和穩定性以及對硬體的支持。 由於企業版操作系統的開發周期較長,注重性能、穩定性和服務端軟體支持,因此版本更新相對較緩慢。
RedHat Enterprise Linux又分為4個版本 Advanced Server(AS)、ES Workstation(WS)、Desktop,它們的差別不太大,只是功能方面的差別。
1.4 linux作為伺服器是發展趨勢
在上面的章節中主要介紹了幾種最常見的linux發行版本,其實linux的發行版本還有很多很多,比較常見的還有Debian GNU/Linux, Mandriva, Gentoo,Slackware, Knoppix,MEPIS, Xandros,國產的紅旗redflag,中標linux等等,這里不再一 一介紹,其實縱觀linux的各個發行版,linux發行版本無非是朝著這兩個方面而來,一是伺服器市場,而是桌面市場。
以Ubuntu Linux為代表的linux發行版走的是桌面市場路線,雖然它們給用戶帶來很多驚喜,更新也很快,但是由於桌面市場有著windows這樣強勁的對手,linux桌面發展舉步維艱。
以redhat系列版本為代表的linux發行版現在主要面向企業級linux的伺服器市場,重點開發linux的企業版本,suse linux同樣主要力量也集中在開發企業級linux上面,其它的例如國產redhat flag,中標linux等都重點投入在了linux伺服器市場。linux兩大發布廠商現在都走了linux伺服器市場的路線,可見linux作為企業級伺服器有著巨大的發展前途,據權威部門統計,linux在伺服器市場的佔有率每年都在持續上升。
其實很多linux的應用都是針對linux伺服器的,本書的講述也是主要針對linux在伺服器下的各種應用展開的。
二、 養成良好的linux操作習慣
當你進入linux的學習之後,請不要用windows的工作方式來思考問題,因為它們之間確實有很大的不同,比如它們之間的內存管理機制,進程運行機制等都有很大不同,這些異同點將在下面章節陸續講述,因此,拋開windows那種思維,用全新的理念嘗試去挖掘linux身上特有的潛質,對初學者至關重要。
2.1 一定要習慣命令行方式
Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平,命令行方式的操作永遠是不會變的,Linux命令有許多強大的功能:從簡單的磁碟操作、文件存取、到進行復雜的多媒體圖象和流媒體文件的製作都離不開命令行。雖然linux也有桌面系統,但是X-window也只是運行在命令行模式下的一個應用程序。
因此,可以這么說,命令是學習linux系統的基礎,學習linux,很大程度上就是學習命令,很多linux高手其實都是玩兒命令很熟的人。
也許對於剛剛從windows系統進入linux學習的初學者來說,立刻進入枯燥的命令學習,實在太難,但是你一旦學會就愛不釋手。因為它的功能實在太強大了。您未來的學習之路也將會以指數增加的方式增長。
2.2 理論結合實踐
有很多初學者都會遇到這么一個問題,說到系統的每個命令,都很熟悉,但是在系統出現故障的時候,面對出現問題的linux系統無從下手了。不知道在什麼時候用什麼命令去檢查系統,這是很多linux新手最無奈的事情了。說到底,就是學習的理論沒有很好的與系統實際操作相結合。
很多linux知識,例如每個命令的參數含義,在書本上說的很清楚,看起來也很容易理解,但是一旦組合起來使用,卻並不是那麼容易,沒有多次的動手練習,其中的技巧是無法掌握的。
人類大腦不像計算機的硬碟一樣,除非硬碟壞掉或者硬碟被格式化,否則儲存的資料將永遠而且時刻的記憶在硬碟中。而在人類記憶的曲線中,必須要不斷的重復練習才會將一件事情記得比較熟。同樣的,學習 Linux 也一樣,如果無法經常學習的話,學了後面的,忘記了前面的;還有些linux初學者也學了很多linux知識,但是由於長期不用,導致學過的東西在很短的時間內又忘記了,久而久之,失去了學習的信心。
可見,增加自己Linux 的實戰技能,只有勤於動手,勇於實踐,這也是學好linux的根本。
2.3 學會使用linux聯機幫助
各個Linux的發行版本的技術支持時間都較短,這對於Linux初學者來說往往是不夠的, 其實當安裝了一個完整的Linux系統後其中已經包含了一個強大的幫助,只是可能你還沒有發現和使用它們的技巧。例如,對於一個linux tar命令的使用,你不是很熟悉,那麼只要你在命令行輸入man tar, 就會得到tar的詳細說明和用法;
主流的linux發行版都自帶了非常詳細的幫助文檔,包括使用說明和FAQ,從系統的安裝到系統的維護,再到系統安全,針對不同層次人群的詳盡文檔。仔細閱讀文檔後60%的問題都可在這里得到解決。
2.4 學會獨立思考問題,獨立解決問題
遇到問題,首先想到的應該是如何自己去解決這個問題,解決方式很多,看書查資料,網路搜索引擎,技術論壇等等,通過這幾種方式,90%的問題都能得到解決,通過這種方式一方面鍛煉了自己獨立解決問題的能力。另一方面技術上也能得到快速提高。
如果通過如上方式實在解決不了的話,可以向人詢問,得到答案後要考慮為何這么做,然後做筆記記錄解決過程。最忌諱的方式是只要遇到問題,就去問人,雖然這樣可能會很快解決問題,但是長久下去遇到問題就會依賴別人,技術上也不會進步。
2.5 學習專業英語
如果你想深入學習Linux,一定要嘗試去看英文文檔。因為,技術性的東西寫的最好的,最全面的文檔都是英語寫的,最先發布的高新技術也都是用英語寫的。即便是非英語國家的人發布技術文檔,也都首先翻譯成英語在國際學術雜志和網路上發表。安裝一個新的軟體時先看README,再看INSTALL,然後看FAQ,最後才動手安裝,這樣遇到問題就知道為什麼。因此,學習一點專業的英語是很有必要的。
2.6 Linux學習基本步驟
到這里,我們總結一下linux的學習路線圖,給各位初學者作為參考。
初級階段:
1. 命令是必須要學的,linux常用的命令大概在80個左右,這些常用命令一定要熟練掌握。
2. 掌握linux軟體包的常用安裝方法,例如源碼安裝,rpm方式安裝等等。
3. 學習安裝設備驅動程序(比如網卡、顯卡驅動)
4. 熟悉Grub/Lilo引導程序及簡單的修復操作。
5. 熟悉Linux文件系統和目錄結構以及linux基本運行原理。
6. 掌握vi,gcc,gdb等常用編輯器,編譯器,調試器。
7. 理解shell別名、管道、I/O重定向、輸入和輸出以及shell簡單腳本編程。
8. 學習Linux環境下的網路基本組建。
高級階段:
1:嘗試閱讀linux內核源碼:
這需要具有一定的C、C++語言基礎,因為C、C++是linux/unix的核心語言,系統代碼都是C寫的。
2:嘗試編譯安裝和調試自己的linux內核:
在閱讀源碼了解了linux底層的運行原理後,完全可以編譯一個適合自己的linux系統來。
3:深入學習shell, perl,cgi等腳本語言:
這些腳本語言在linux下非常強大,它們能完成你想做的任何事情,熟練掌握這些語言,可以讓你在linux系統下游刃有餘,如魚得水。
4:構建企業級linux高可用集群系統:
linux下有很多開源免費的集群軟體,利用這些免費的集群軟體完全可以構建出與商業unix系統想媲美的集群系統來。
三、用虛擬機軟體學習linux
3.1 什麼是虛擬機軟體
虛擬機軟體可以在一台電腦上模擬出來若乾颱PC電腦,每台PC可以運行單獨的操作系統而互不幹擾,可以實現一台電腦「同時」運行幾個操作系統,還可以將這幾個操作系統連成一個網路。
圖1:安裝了3台虛擬機的windows系統
比如圖1中,是在一台電腦上安裝了Windows 2000 Server,再在Win2000 server上安裝虛擬機軟體VMWare,利用VMWare模擬出來3台PC,在這3台PC上分別運行RedHat Linux、Win2000和Solaris 9 for x86操作系統。這4個操作系統同時在一台電腦上運行,互不幹擾,並且同在一個區域網內。
聽了上面的基本介紹,你可能知道虛擬機軟體到底是做什麼用的了。那麼好,我們繼續做更深入的介紹。
目前PC上的虛擬機軟體最常用的有下述兩個:
VMWare 網址為:http://www.vmware.com
Virtual PC 網址為:http://www.connectix.com
3.2 使用虛擬機軟體的好處
1、如果要在一台電腦上安裝linux和windows系統,不用虛擬機的話,有兩個辦法:一是裝多個硬碟,每個硬碟裝一個操作系統。這個方法比較昂貴。二是在一個硬碟上裝雙系統。這個方法不夠安全,因為系統盤的MBR是操作系統的必爭之地,windows更是霸道,每次重新安裝系統都要重寫系統的MBR,這樣的話搞不好會幾個操作系統同歸於盡。而使用虛擬機軟體既省錢又安全,因此,對於新手來說,利用虛擬機學習linux簡直是再好不過了。
2、在虛擬機上安裝linux系統,你不用擔心會格式化掉自己的硬碟,你甚至可以隨意的對虛擬系統進行任何的設置和更改操作,你可以格式化虛擬系統硬碟,重新分區虛擬系統硬碟等等, 因為虛擬機是你真實系統上運行的軟體,對虛擬機系統的任何操作都是對軟體的操作。
3、利用虛擬機模擬出來的linux系統和真實的linux系統是一摸一樣的,現在各個公司專門的linux伺服器是不會讓新手隨意去動的,而供測試的linux伺服器一般又很緊缺,在自己電腦上安裝虛擬linux系統,可以隨意的學習測試,而不受任何環境影響。
3.3 虛擬機的運行環境和硬體需求
1:運行環境
VMWare可運行在Windows(WinNT以上)和Linux操作系統上。
Virtaul PC可運行在Windows(Win98以上)和MacOS上。
注:運行虛擬機軟體的操作系統叫Host OS,在虛擬機里運行的操作系統叫Guest OS。
2:硬體需求
虛擬機是將兩台以上電腦任務集成到一台電腦上來,因此對硬體要求比較高,主要是內存,硬碟和cpu;內存要足夠大,因為每個虛擬機都會佔用一定的內存資源,內存的總大小等於各個虛擬系統的總和。可喜的是,現在內存已經很便宜了,內存就不是問題了。同樣,硬碟空間也是每個虛擬機都要佔用的,cpu現在都到了多核階段,也不是問題。
3.4 虛擬機的安裝與使用
1.VMware虛擬機概述
上面章節講到,虛擬機軟體有VMWare和Virtual PC,它們各有優缺點,其中VMWare在全球佔領了80%的市場份額,因此我們也主要講述VMWare的安裝與使用。
VMware是提供一套虛擬機解決方案的軟體,主要產品分為如下3個:
(1)VMware-ESX-Server: 這個版本並不需要操作系統的支持。它本身就是一個操作系統,用來管理硬體資源。所有的系統都安裝在它的上面。帶有遠程web管理和客戶端管理功能。
(2)VMware-GSX-Server: 這個版本就要安裝在一個操作系統下了,這個操作系統叫做HOST OS。 這個HOST OS可以是Windows 2000 Server以上的Windows系統或者是Linux(官方支持列表中只有RH,SUSE,Mandrake很少的幾種),和VMware-ESX-Server一樣帶有遠程web管理和客戶端管理功能。
(3)VMware-WorkStation: 這個版本和VMware-GSX-Server版本的機構是一樣的。也是要安裝在一個操作系統下,對操作系統的要求也是Windows 2000以上或者Linux。和Vmware的區別就是沒有web遠程管理和客戶端管理。
Vmware GSX Server不支持虛擬機雙CPU,而且已經停止開發新版本, Vmware Server 是Vmware 公司決定將GSX Server免費後,重修代碼後發布的, 目前有版本更新。因此我們選擇免費的GSX Server作為講述的版本。
2.虛擬機軟體的安裝
我們在windows下安裝windows版本的VMware server,然後在VMware server上安裝linux操作系統。虛擬機軟體的安裝很簡單,只需按照windows常規方法安裝即可完成,這里不在講述。
3.創建一個虛擬機系統
虛擬機軟體安裝完畢,雙擊桌面上的 VMware Server 圖標以啟動應用程序:
(1) 按CTRL-N創建一個新虛擬機,彈出新建虛擬機向導,如圖2所示界面,點擊下一步:
圖2
(2)選擇虛擬機配置,如圖3所示,這里選擇「Custom」,點擊下一步:
圖3
(3) 選擇客戶機操作系統,如圖4所示,這里選擇「Linux」,版本選擇「Red Hat Enterprise Linux 4」,點擊下一步:
圖4
(4) 給虛擬機命名,如圖5所示,虛擬機名稱設為Red Hat Enterprise Linux 4,虛擬機路徑設為「C:\Virtual Machines\Red Hat Enterprise Linux 4」,點擊下一步:
圖5
(5) 設置訪問許可權,如圖6所示,去掉「Make this virtual machine private」。 這樣可以保證系統安裝完畢,虛擬機linux系統可以和windows系統互通。點擊下一步:
圖6
(6) 啟動/關閉選項,如圖7所示,虛擬機帳戶,選擇「User that powers on the virtual machine」,點擊下一步:
圖7
(7) 虛擬機處理器配置,如圖8所示,這里選擇一個處理器。 如果你有多個處理器可以選擇多個,點擊下一步:
圖8
(8) 設置虛擬機內存大小,如圖9所示,可以通過滑竿選擇給虛擬機系統分配的內存大小,一般選擇是windows系統內存的一半。這里選擇800M。點擊下一步:
圖9
(9) 選擇虛擬機網路連接類型,如圖10所示,這里選擇「Use bridged networking」網橋方式,點擊下一步:
圖10
(10) 選擇 I/O 適配器類型,如圖11所示,這里選擇「LSI Logic」,點擊下一步:
圖11
(11) 選擇虛擬磁碟,如圖12所示,選擇「Create a new virtual disk」,點擊下一步:
圖12
(12) 選擇磁碟類型,如圖13所示,選擇「SCSI (Recommended)」,點擊下一步:
圖13
(13) 指定虛擬機磁碟容量,如圖14所示,磁碟容量,可根據自己的需求選擇大小,安裝Linux,一般5G即可滿足需求,這里輸入「25GB」,選擇「Split disk into 2 GB files」,點擊下一步:
圖14
(14) 指定磁碟文件路徑,如圖15所示,可以點擊「Browse」指定磁碟文件的路徑,這里的路徑為「F:\Red Hat Enterprise Linux 4\Red Hat Enterprise Linux 4.vmdk」,然後點擊完成,即可完成虛擬機的創建。
圖15
(15) 虛擬機創建完畢後,出現虛擬機控制台界面,如圖16所示,這樣我們就創建了一個 linux虛擬機系統,接下來就需要在虛擬機下安裝linux系統了。
圖16
(16) 點擊圖16虛擬機控制台中的「Edit virtual machine settings」選項,即可到「virtual machine settings」界面,如圖17所示:
在這個界面中,我們可以添加虛擬機各種資源、編輯虛擬機的各種屬性,例如修改虛擬機內存大小、編輯網卡連接方式、添加一個虛擬磁碟、指定光碟的引導方式等。還可以刪除虛擬機中的各種資源。
圖17
(17) 點擊圖18中「add」按鈕,出現圖18所示界面:在這個界面中,可以給虛擬機添加各種硬體資源,例如,硬碟、光碟機、軟碟機、網卡、音效卡等設備。
圖18
到此為止,虛擬機的安裝和基本配置已經介紹完畢,接下來開始講述在虛擬機上安裝linux的方法。
4.虛擬機上linux安裝方式
在虛擬機上安裝linux系統,常用的方法有兩種:光碟機安裝和iso鏡像文件安裝。
(1) 光碟機安裝方式
在 VMware Server控制台上,雙擊右面板上的 CD-ROM 設備,然後選擇Use physical drive,location選擇host,下面下拉框選擇Auto detect即可。如圖19所示,最後,Linux系統光碟放入光碟機,單擊「Start this virtual machine」即可進入Linux安裝界面。
(2) iso文件安裝方式
在 VMware Server 控制台上,雙擊右面板上的 CD-ROM 設備,然後選擇Use ISO image,然後指定iso文件路徑,如圖20所示,最後,單擊Start this virtual machine即可進入Linux安裝界面。
圖19
圖20
Linux系統的安裝,我們將在在後面文章中講述,這里不在多說。
四、linux學習資源
4.1 網路資源,搜索引擎,論壇
Linux的開源特性決定了linux知識的開放性和充足性。當今,linux非常流行,linux學習資源也非常之多,書店到處可見linux方面的書籍,選擇一本適合自己的慢慢去學習,再好不過。
除了書本的知識,網路里也有無限的linux學習資源,各大linux技術門戶,linux社區論壇,都是學習linux的好地方;在這里,有一批無私奉獻的linux狂熱愛好者,他們把自己的學習經驗和學習總結無償的發布出來;他們每天在linux論壇的各個角落熱情的回答廣大網友提出的問題;他們不求回報,因為他們熱愛技術,熱愛linux。
遇到學習問題,或者要查找某些linux資料,搜索引擎絕對是第一選擇,例如google.cn和.com,99%的技術資料都能在這里搜到。查找linux資料,不要錯過這兩個優秀的搜索引擎。
4.2 有本書在身邊
網路中有很多linux學習資源,豐富的學習資源,雖然給我們學習提供了很好的便捷性,但是也造成了我們學習的盲目性,學習資源的豐富性,引出的另一個問題是資源的混雜,剛入門的新手感覺無從下手,可能今天看了一點內存管理的資料,明天學習了一點磁碟管理的資料,並且總是感覺自己理解了也學會了,但是就是無法靈活的掌握,究其原因,就是沒有系統的學習linux。
因此,選擇一本好書在自己身邊是必須的,一本好書應該是由淺入深,有點及線,有線及面的介紹知識,選擇一本好書,同時結合網路資源進行循序漸進的學習,此時,你的學習就不會再有空洞感,進步也會飛快。你會感覺學習linux是一件很快樂的事情。
五、linux的應用領域
很多新手都有一個很疑惑的問題:「我學習linux系統,能在上面干什麼呢,或者說linux系統具體能做什麼」,有這樣的疑問,也很正常,但是隨著對linux了解的加深,這些疑問就會慢慢消除,下面具體講述下linux操作系統的應用領域(也就是linux到底是幹啥的)。
1:伺服器領域
現在的伺服器市場以linux、unix、windows三分天下, linux可謂後起之秀,從產生發展到現在,在伺服器應用領域節節攀升,並且每年增長勢頭迅猛。
Linux作為企業級伺服器應用廣泛,利用Linux系統可以使企業構架WWW伺服器、代理伺服器、郵件伺服器、DNS伺服器、透明網關、路由器等等,不但給企業降低了運營成本,同時獲得了linux系統帶來的高穩定性和高可靠性。
隨著linux在伺服器領域的廣泛應用,這幾年來,linux已經悄悄進入政府、教育、銀行、石油等行業,同時各大unix廠商也推出在unix平台支持linux操作系統,例如IBM AIX。這一切表明,linux在伺服器市場前景光明,相信在不久的將來,linux會滲透到社會各個領域。
2.嵌入式Linux系統
由於 Linux系統開放源碼,功能強大、可靠、靈活而且具有伸縮性,再加上它廣泛支持大量的微處理器體系結構、硬體設備、圖形支持和通信協議,因此,在嵌入式應用的領域里,從網際網路設備到專用的控制系統,Linux 操作系統的前景都很光明的。
例如,諾基亞和摩托羅拉公司都推出了linux平台的手機。
B. 新手如何自學linux
初學者入門首選——Centos系列
CentOS系列版本可以輕松獲得;
CentOS現在擁有龐大的網路用戶群體,網路Linux資源基本80%都是基於CentOS發行版;
CentOS應用范圍廣,具有典型性和代表性。
養成良好的Linux操作習慣
(1)一定要習慣命令行方式
Linux是由命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平,命令行方式的操作是不會變的。
(2)理論結合實踐
要不斷地重復練習才會將一件事情記得比較牢。學習Linux也一樣,如果無法堅持學習的話,就會學了後面的,忘記了前面的。
(3)學會使用Linux聯機幫助
主流的Linux發行版都自帶了非常詳細的幫助文檔,包括使用說明和FAQ,從系統的安裝到系統的維護,再到系統安全,針對不同層次用戶的詳盡文檔。仔細閱讀文檔後,60%的問題都可在這里得到解決。
(4)學會獨立思考問題,獨立解決問題
遇到問題,首先想到的應該是如何自己去解決這個問題,解決方式有很多,比如看書查資料、網路搜索引擎搜索和瀏覽技術論壇等。
(5)學習專業英語
如果想深入學習Linux,一定要嘗試去看英文文檔。
C. 想學習Linux編程,需要學習哪些基礎
linux最先要學的是Linux基礎知識,學完基礎知識才算入門,之後還要學習綜合架構、Shell編程、資料庫、雲計算以及網路安全方面的知識,以下是linux基礎部分要學習的內容:
1. 計算機硬體、組成原理、操作系統基礎、Linux起源、核心介紹及Linux安裝實戰入門
2. Xshell遠程網路連接Linux、基礎優化、遠程連接網路基礎、Xshell連接故障排錯、核心基礎命令講解
3. Linux系統核心通配符體系、三劍客(grep,sed,awk)核心正則表達式精講及企業級案例實戰模擬精講
4. Bash核心符號、快捷鍵、通配符詳解
5. Linux目錄、FHS\掛載、文件屬性、核心目錄精講
6. Linux文件及目錄管理核心知識和命令精講(第二關)
7. Linux企業級基礎優化(工作中可直接使用
8. Linux文件及目錄許可權精講及多個企業案例模擬
9. Linux重要核心命令回顧與深入精講(第三關)
D. 嵌入式學習書籍有哪些
以下是華清遠見·星創客嵌入式精英訓練營提供的學習嵌入式必看的100本書:
001《大話數據結構》
002《鳥哥的 linux 私房菜》
003《瘋狂 android 講義》
004《第一行代碼》
005《linux 內核設計與實現》
006《驅動設計開發》
007《linux 內核解密》
008《unix 環境高級編程》
009《linux 內核設計與實現》
010《essential C++》
011《嵌入式 linux》
012《linux 設備驅動》
013《c 語言深度解剖》
014《linux 下的 c編程》
015《C Primer Plus(第五版)》
016《ARM 體系結構與編程(第二版)》
017《lINUX 設備驅動開發詳解(第三版)》
018《android 開發藝術探討》
019《c++plus》
020《Unix 環境高級編程》
021《與大數據同行——學習和教育的未來》
022《用戶體驗的要素》
023《編程與藝術》
024《ARM 嵌入式體系結構與介面技術》
025《cortex-m0 介面編程》
026《C 語言程序設計:現代方法》
027《C++ Primer》
028《數據結構》(嚴蔚敏)
029《演算法導論》
030《Linux 設備驅動開發》
031《代碼大全》
032《深入理解計算機系統》
033《UNIX 環境高級編程》
034《計算機安全原理》
035《UNIX 網路編程》
036《HeadFirst 設計模式》
037《linux 驅動》(宋保華)
038《C++ primer4》
039《qt5 精彩實例》
040《ldd3》
041《C++高級編程》
042《c語言教程》
043《實戰 linux 編程精髓》
044《ARM 教程》
045《JAVA 編程思想》
046《HTML+CSS 網頁設計與布局從入門到精通》
047《C 語言深度解剖》
048《深度實踐嵌入式 Linux 系統移植》
049《unix 高級編程》
050《c 嵌入式一站式教學》
051《編譯原理》
052《深度實踐嵌入式 Linux 系統移植》
053《UNIX 環境高級編程》
054《linux 網路編程》
055《C 語言程序設計》
056《unix 環境高級編程》
057《嵌入式 linuxc 語言程序設計基礎教程》
058《Java 編程思想》
059《TCP/IP 詳解》
060《linux 技術手冊》
061《C 語言深度剖析》
062《Unix 高級環境編程》
063《C++primerplus》
064《QT》
065《C 程序設計》
066《C 和指針》
067《C++primer》
068《C 程序設計語言》
069《ProgrammingC#》
070《thinking in C++》
071《Linux Device driver》
072《Linux kernel development》
073《軟體工程》
074《C 和指針》
075《Android 核心代碼》
076《Android 技術內幕》
077《Android 底層移植》
078《Unix 編程手冊(上下卷)》
079《Linux 驅動設計第三版》
080《ARM 實戰開發》
081《unix 環境高級編程》
082《tcp/ip 編程詳解》
083《Linux 網路編程》
084《Unix 編程藝術》
085《計算機程序的構造和解釋》
086《C Primer plus》
087《LINUX 權威指南》
088《LINUX 設備驅動程序》
089《The C Programming Language》
090《ajax 高級程序設計》
091《angula js 權威教程》
092《ARM 體系結構》
093《Unix 環境高級編程》
094《Linux 設備驅動程序》
095《現代操作系統》
096《TCP/IP 協議詳解》
097《嵌入式 C 語言設計模式》
098《Struts In Action》
099《c 程序設計語言(第二版)》
100《深入理解 Linux 內核(第三版)》
E. 淺談如何學習linux
一.為什麼要學linux?
當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!
二.起步
你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上而應集中精力學習最有用的東西。
【注】現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮:)
如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬碟上,你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單
從此現在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的「天才unix」的氣質。
F. 學Linux到底學什麼
第一條:運維應用-->系統架構-->運維開發-->系統開發
第二條:運維應用-->應用dba-->架構dba-->開發DBA
下面詳細每個階段的職位說明:
01.運維應用級別:
這個階段就是玩別人的軟體,例如:linux,nginx,mysql,php,nagios 大多數的linux運維工程師,網路工程師,系統工程師都是這個階段。 這個階段屬於金字塔的底端,工資是相對比較低的。
02.系統架構級別:
這個階段就是用已知軟體架構大規模集群方案以及實現各種技術方案,屬於運維應用上層,需要靠技術,溝通,思想三條線通力配合才能達到這個水平。
03.運維開發級別:
這個階段就是利用已知語言,開發基本的應用層工具,例如:web管理系統,如果具備前兩個運維應用和系統架構的積淀,這個是很輕松可以實現的。
04.系統開發級別:
這個階段就是修改開源的軟體,或者開發新的服務軟體(例如:也開發一個web軟體,存儲軟體)與底層軟體(例如:OS),是更高一層的開發人員。
05.資料庫管理和架構:
這個階段就是也主要是玩別人的軟體,但是數據相對更重要,要求有一定的運維應用的能力。
以上是常規的Linux發展路線,對於想學Linux運維,或正處於Linux運維相關工作的人員,可以根據自身的情況進行定位,選擇適合自己的發展路線,往往可以在職場上更加得心應手!
G. linux里的chmod u+s如何用程序實現呢謝謝
直接可以用chmod函數
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int filedes, mode_t mode);
chmod第一個參數 是文件路徑名 , 第二個是 文件屬性值
fchmod第一個參數是文件描述符, 第二個是文件屬性值
推薦看Arnold Robbins 的 《Linux Programming by Example》《實戰Linux編程精髓》
樓上說的直接調用 shell 也可以 新建一個進程 使用 exec函數族 執行 chmod u +s
H. 成為一名嵌入式Linux開發工程師需要學習哪些知識
嵌入式系統是計算機軟體和硬體的綜合體,崗位包括:ESE(嵌入式軟體工程師);ADE(嵌入式應用開發工程師);FWE(嵌入式底層開發工程師);FEC(嵌入式固件開發工程師)。
課程內容主要包括:
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的項目,詳細可以找我要資料。
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。