linux開發學習
1. 嵌入式linux驅動程序開發學習路線
關於這個方向,我認為大概分3個階段:
1、嵌入式linux上層應用,包括QT的GUI開發
2、嵌入式linux系統開發
3、嵌入式linux驅動開發
嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、VxWorks等等
Linux是開源免費的,而且其源代碼是開放的,更加適合我們學習嵌入式。
所以你可以嘗試以下路線:
(1)C語言是所有編程語言中的強者,單片機、DSP、類似ARM的種種晶元的編程都可以用C語言搞定)神數,因此必須非常熟練的掌握。
推薦書籍:《TheCProgrammingLanguage》這本經典的教材是老外寫的,也有中譯版本。
(2)操作系統原理,是必需的,如果你是計算機專業畢業那也就無所謂了,如果是非計算機專業的就必須找一本比較淺顯的計算機原理書籍看一看,把啥叫「進程」「線程」「系統調度」等等基本問題搞清楚。
(3)Linux操作系統就是用C語言編寫的,所以你也應該先學習下Linux方面的編程,只有你會應用了,才能近一步去了解其內核的精髓。
推薦書籍:《UNIX環境高級編程》(第2版)
(4)了解ARM的架構,原理,以及其匯編指令,我們在嵌入式開發中,一般很少去寫匯編,但是最起碼的要求是能夠看懂arm匯編。
(5)系統移植的時候,就需要你從最下層的bootloader開始,然後內核移植,文件系統移植等。而移植這部分對硬體的依賴是非常大的,其配置步驟也相對復雜,也沒有太多詳細資料。
(6)驅動開發
linux驅動程序設計既是個極富有挑戰性的領域,又是一個博大精深的內容。
linux驅動程序設計本質是屬於linux內核編程范疇的,因而是對linux內核和內核編程是有要求的。在學習前你要想了解linux內核的組成,因為每一部分要詳細研究的話足夠可以擴展成一本厚書。
以上只不過是大概的框架,在實際的開發中還會涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學習嵌入式的周期較長,門檻較高,自學的話更是需要較強的學習能力和專業功底。只要能堅持下來一定會取得成功!
嵌入式非常難,看書的話比較晦澀難懂,不容易入門,我個人比較偏向於看視頻教程,因為有老師帶著比較容易入門。給看看一篇文章是關於一位專科生怎麼自學嵌入式的。
做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的游兆首文章,是一個嵌入式猜姿高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟網站推出的一份視頻《零基礎嵌入式就業班》(喜歡《零基礎嵌入式就業班》的可以復制sina.lt/qKh粘貼瀏覽器按回車鍵即打開)。裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻比較便宜。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
2. 在Linux下做開發 要學習Linux哪些東西
嵌入式Linux要學哪些?一些人總在尋思,怕走了彎路,又怕學的東西離企業需求遠。那麼今天就請華清遠見高級講師曹大神告訴你,9點淺析嵌入式學習步驟。下面是他本人親筆。
1、要學習Linux,首先要會用,如果不會用怎麼知道怎麼知道怎麼去做,所以需要學習Linux系統的安裝及使用。
2、學會用Linux了,那麼我們就要做一些Linux下的開發了,開發什麼呢?看到網上有很多很強大很有趣的程序,我們都可以嘗試去做,可是如何去做呢,程序是什麼呢,怎麼寫呢?這時我們需要學習一些語言,比如比較基礎的C語言,比如面向對象的C++,Java等。
3、寫完程序了發現不就是一個很普通的文件嗎,怎麼能像別人寫的程序一樣運行起來呢? 這時我們需要知道如何編譯一個程序,需要知道編譯器及一些其他工具的使用,比如GCC,在開發的過程中我們為了提供工作效率還會用到Make,Shell等,為了能夠很好的管理我們代碼的不同版本,我們還需要知道什麼是SVC,CVS,subversion,Git等。
4、當我們開始寫一些比較大的程序,不再是以往的hello world級別的了,這時我們發現我們考慮的更多了,我們考慮到了程序的效率,我們發現需要讀寫文件了,我們發現需要和另外一台電腦通信了,於是我們有需要學習一些更高級點的東西了,比如數據結構,比如文件IO,比如多進程多線程編程,比如網路通信,這時我們會接觸很多新的名詞,什麼是樹,圖...,什麼是文件io什麼是標准IO,什麼是進程線程,什麼是TCP/IP...。
5、當我們再進一步的話,我們會發現我們什麼有很多的東西都運行的是Linux系統,可是他們和我的PC運行的Linux有什麼區別呢,為什麼我電腦要用風扇而手機不用風扇呢,我們打開網頁查找手機的詳細參數的時候,會看到Cortex-A15 、四核 、ARM等等字眼,什麼是ARM,什麼是Cortex-A15,我們需要進一步的了解。
6、了解完ARM之後,很多人就回去購買一些開發板,去學習它,這時操作系統的移植又成了一個比較重要的內容了,什麼是bootloader,什麼是kernel,什麼是rootfs等等,我們怎麼做呢。
7、花了很長時間系統做好了,發現板子上很多的什麼不能用,怎麼辦呢? 這時我們需要寫一些驅動來驅動這些設備,這時我們需要知道,什麼是字元設備驅動、塊設備驅動、網路設備驅動,為了更好的寫驅動我們需要了解更多的硬體相關的東西,我們需要看懂晶元手冊,我們需要看懂原理圖,只有我們懂我們的設備,才能更好的驅動它。
8、等等,這里就列舉更多的內容了,因為還有很多。
9、這些都有了我們就可以自行開發我們自己的產品了。
嵌入式Linux要學哪些?上述9點基本很明了了。這也算是嵌入式學習的一個基本步驟。本人認為到第九點你已經是一個高級的嵌入式Linux人物了,工資待遇我已經不用說,咋說也得15K往上了,如果做管理30K也是有的。這些東西要靠自學,說實話不太現實,嵌入式入門門檻相對高,要有心裡准備,參加培訓班是有必要的,除非你有親戚朋友手把手教你。引用一句老話:「師傅領進門,修行是靠個人!」自己必須得喜歡鑽研與學習,只有付出才會有收獲!
最後說一點,Android系統也是在linux系統基礎上開發的,所以學嵌入式linux的朋友,將來不僅可以從事嵌入式開發的工作(嵌入式的應用領域非常廣泛,永不過時!)還可以從事android開發方向的工作(輕松邁入),從職業發展來說,嵌入式linux也是程序員最具發展前景的技術首選。
頂
23
踩
3. linux該如何學習
linux運維的學習過程,主要分為4個階段,初級入門->中級進階->高級提升->資深細化。
第一階段:初級入門
1、linux基礎知識、命令(常用命令如cp、ls、mkdir等)
2、linux用戶及許可權基礎
3、linux系統進程管理進階
4、linux文件處理命令(vim、grep、sed、awk、find等)
5、shell腳本入門
第二階段:中級進階
1、tcp/ip網路基礎
2、linux企業級安全原理和防範技巧
3、加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎
4、iptables安全策略構建
5、shell腳本進階
6、mysql應用原理及管理入門
第三階段:高級提升
1、企業級負載集群(主要學習varnish、nginx緩存系統)
2、企業級高可用集群(需要對keepalived、heartbeat有一定了解)
3、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統)
4、運維自動化學習(需要學一些開源運維自動化工具的使用,如ansible、puppet、cobbler等工具)
第四階段:資深進階
1、大數據方向(需要對hadoop、storm等常見開源大數據系統深入了解)
2、雲計算方向(主要是openstack,kvm等虛擬化技術也是需要的,還有docker)
3、運維開發(python運維開發)
4、自動化運維(在之前自動化基礎上做深入)
4. 如何學習linux
學習Linux步驟:
1、先了解了解基礎吧,找一本薄一點的,淺一點的書,了解一下什麼是linux。有個基本了解即可。不建議馬上看《鳥哥的Linux私房菜》,這本書很不錯,如果你了解linux基礎之後再看,對你可以說是不受益匪淺都不行。沒基礎看《鳥哥的Linux私房菜》比較痛苦,內容很多。
2、了解之後,在自己電腦上弄個虛擬機,裝上linux系統(redhat或ubuntu都行)。專攻《鳥哥的Linux私房菜》。當你把這本書攻下來時,才知道原來命令行並不可怕,自己打著打著就很長啦。
學linux最主要靠實踐,不實踐,只看書對你沒好處的哦。自己在虛擬機上慢慢玩吧,玩多了就知道咋回事啦。不懂的多找資料弄懂,弄懂之後再實踐,這才會有收獲。
5. Linux主要學些什麼東西
主要學習四個階段,第一階段基礎命令,許可權等等;第二階段涉及網路協議,資料庫,shell等;第三階段就是高級提升,包括docker,k8s等等;第四階段就是資深提升階段,包括大數據,雲計算,運維開發等等