要找到 Linux C 相關工作,必須學會什麼技能?
比如要學會什麼 IDE、會用什麼第三方庫這些?
既然是做開發,首先就必須掌握一門語言,C,C++不錯,看書的話建議從以下的順序:C語言程序設計(老譚的),C和指針。第一本是入門,第二本是加深你對C語言的了解。不僅僅是熟讀就可以了 要多動手。此為C語言程序員初級階段
其次,是能夠在系統下編程,這樣推薦以下幾本書,挑一本就可以了:linux程序設計,unix搞基環境編程,這基本書是介紹如何在linux下編程,重點掌握以下一些知識:標準IO的使用,多線程編程,進程間通訊方式,以及網路編程,最好也能夠掌握資料庫方面的知識。此為linux C程序員中級偏下階段。
以上知識掌握之後,就是對系統認識的提升,對其他技能知識的補充,至此,也是選擇方向的一個契機了,走網路方向的話,需要重點掌握TCP/IP協議,走視頻、圖片方向的話需要了解H264等一些媒體方面的協議,還有其他一些方向,我也不太清楚。
嵌入式編程和linux系統開發沒有本質的區別,相關知識在工作中就能夠掌握。當然語言本身的技能提升也是必須的,可以看看演算法相關的書籍,彙編相關的知識也是需要的。
我個人的知識也只能理解到這裡了,更高層次的我也還在摸索中。
另外,像在實際工作中, gdb調試手段是需要掌握的; makefile的相關知識最好是需要掌握,如果沒有時間可以推後; 編碼工具用的比較多得是source insight; 常用的linux命令也是需要掌握的; vargrind內存檢測工具很有幫助,可在工作中學習。剛入門的話會c語言和熟悉linux的使用基本上就能找到工作了;但如果要做一個優秀的linux c開發工程師,需要很多其它方面的知識與經驗,比如調試工具,makefile,演算法,網路協議,kernel原理等等
我也只是學生,恐怕不能完全回答樓主問題。但是就我拙見,至少c要好吧,會用vim或者emacs吧,至少懂一些網路編程吧,至少知道多線程並發程序的基礎寫法吧,linux精髓在於伺服器,至少這方面不能弱吧,退一步說,shell稍微學學,會很輕鬆的。
我上學的時候做的都是硬體相關的工作,畢業找工作換了一份linux C的工作,目前工作了14個月了,所以關於Linux C需要哪些知識和技能上的儲備以及未來的發展方向,我也想說一說自己的看法:1.基礎技能篇a.C語言學習: C基礎的語法、程序控制流程、函數、結構體等等這些都是基礎,不過這些並不能體現C作為偏底層語言的特徵,如果只有這些的話,C並沒有什麼吸引人的地方,主要在於指針的運用,所以學好指針是重中之重,指針的運用需要在實際中多思考,這個我也沒有太多發言權;b.Linux的基礎學習: 畢竟是Linux環境下的C編程,可以看下《linux下C編程指南》這本書,主要需要學習Linux區別與其他OS的一些特徵、GCC、GDB、Vi、Make等這些工具,期間需要先初步了解Linux多進程、多線程、網路編程的知識,可能用的不深入,但是有個意識是很有必要的;c.數據結構和演算法: 關於數據結構和演算法,我沒有什麼發言權,就像練功一樣,師父們告訴你這個很重要,即使我們目前用不到,也有勤加練習,江湖險惡需要有防身的技能啊,因為至少每次面試都跑不了數據結構和演算法;d.工具 shell、Makefile、Python等;
2.進階篇
如果基礎學習階段基本結束,需要結合自己的實際工作,較為深入的鞏固基礎學習過的東西,感覺基礎學習就是別人給你現成的,我們囫圇吞棗,但是總想起那句:推動世界進步的根源是矛盾,所有我們很有必要了解一些為什麼會出現那些技術和解決方法,eg:進程和線程的區別是什麼?為什麼會出現進程和線程?為什麼說線程比進程開銷小,小在哪裡?什麼時候用進程合適什麼是時候用線程合適?.........所以個人覺得 進階篇還是一個反覆咀嚼的過程,知其所以然;3.升華篇 感覺這個我也不是很清楚,但是Linux C可以作為我們起步的職業定位,最終飛翔的是取決於其他的,Linux內核、Linux C++、再擴展到Java、Python等;=================================================================== 只能回答這麼多了,也在摸索中gcc+gdb+makefile+vi是一套組合,不能單純的拆分開來學習。 gcc主編譯單個文件
gdb調試
makefile用於大型工程解決不同源文件的依賴關係 vi/emacs是編輯器 如果有條件oracle,沒有條件mysql至少要學好 linux主要用於伺服器端,所以網路通信方面的知識也要具備。 系統操作方面基本命令,shell是提高運維效率的工具 至於語言選擇,c入門是不二的選擇,然後多學一門腳本語言,perl /python 補充一個linux c的學習文檔:http://learn.akae.cn/media/index.html我建議你去看看酷殼博客,上面有關於如何學習以及必看的一些書,個人覺得非常受用的。
平時多動手:
1.下載Linux Kernel源碼自己構建並更新;
2.沒事多看源碼如socket的實現; 3.工具類如vim/gcc/Makefile/binutils等; 理論知識: 1.TCP/IP方面建議買本《TCP/IP詳解 卷一》,參考或熟讀均可; 2.操作系統原理、內存管理等; 3.若有意願從事嵌入式建議了解下某類CPU(如ARM)彙編及MMU;我在網路公司。可能是少有的用linux c的公司吧。可以說是運氣好才找到的&>&<...其實題主既然知道要找linux c那麼就應該知道自己喜歡的是什麼,linux c有許多方向,看了樓上那些回答都只是其中的一些方向。然而真是情況是有linux適用於很多方向。
嵌入式C主要還是要學習ARM 設備。需要熟悉java底層優化。網路方向,就是對socket,需要學習非同步、線程、進程這些知識。遊戲方伺服器向也有C/C++的,大部分和網路方向類似。
還需要補充的是,這些以外常常還會用到redis、mysql,還有大數據分析,網路性能分析等等很多方面。看你喜歡那些方面就學那些方面。有一句話我很喜歡。來自 "The Art of UNIX Programming"Software design and implementation should be a joyous art, a kind of high-level play.軟體設計不是為了賺錢,而是一種興趣,一種高端的玩具,如果你只是為了金錢,世界上還有有千萬種更賺錢的方法,何必選他呢?至於編譯程序,linux一般都是gcc makefile autoconf等等吧。這些都沒啥難的。IDE啥的真的不用在意,公司一般也不會限制你,愛用啥用啥唄,我是sublime,codelite的腦殘粉哈哈。我們這邊也有用codeinsight的~當然vim我用的也還SOSO啦~~當年其實主要是學來裝逼用的,可惜妹紙對我擼代碼不感興趣。唉~ vim代碼跳轉什麼的還是沒有高級IDE那麼方便,所以很少用來寫代碼就是了。PS linux方向在廈需要內推可以私信我哈哈哈~~標準C(編輯,編譯,調試),linux操作,腳本, 資料庫(mysql等)。 一些常用工具的熟練使用也很重要,能有效提高工作效率。
我就是「學習Linux C找到工作」的人,兩家嵌入式的offer,待遇向互聯網看齊。不過現在已經改行了。先去睡覺,白天再來吹個牛,講講雞湯和經歷。
C語言,linux命令,linux編程。數據結構,演算法,最好系統性的學習。網路通信,資料庫,操作系統原理主要學會進程的通訊,同步與互斥的使用就好具體在linux編程裡面會詳細介紹!對於伺服器最後再學c++,嵌入式懂點硬體最好!!!往上層可以走應用開發,如TCP/IP網路程序開發,底層可以做設備驅動,但這個最好需要動點硬體基礎(如數電、模電,信號處理等)和彙編語言。語言只是一種工具,最重要的還是要和具體業務結合才有前途!
可以用UE編輯然後導入linux下,或者直接用vim編輯器也可以的。
技能:標準c語法,linux基本命令操作
工具:虛擬機sourcesightnotepadgccgdb內存泄漏檢測工具搜索引擎剩下的就是不斷敲代碼的經驗了。
emacs先學會怎麼用編輯器. gcc用編譯器 Makefile用編譯配置文件 gdb調試程序 linux的介面.. 墨白的回答中有亮點...自尋.."unixXX環境編程"
可能會告別IDE,開始用vi寫代碼。未必了解第三方庫,拿到一個開源代碼得能快速上手看懂開始改。
推薦閱讀:
※為什麼unix和linux里的函數前面都有一個 『f』 ?
※怎麼搭建學習Linux內核的運行、調試環境?
※機器人程序設計之如何正確入門ROS | 硬創公開課(附視頻)
※Pwn2Own 有Unix/Linux系統的機器被攻破么?
※遷移linux系統到新硬碟