要找到 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基本命令操作

工具:虛擬機

sourcesight

notepad

gcc

gdb

內存泄漏檢測工具

搜索引擎

剩下的就是不斷敲代碼的經驗了。


emacs先學會怎麼用編輯器.

gcc用編譯器

Makefile用編譯配置文件

gdb調試程序

linux的介面..

墨白的回答中有亮點...自尋.."unixXX環境編程"


可能會告別IDE,開始用vi寫代碼。

未必了解第三方庫,拿到一個開源代碼得能快速上手看懂開始改。


推薦閱讀:

為什麼unix和linux里的函數前面都有一個 『f』 ?
怎麼搭建學習Linux內核的運行、調試環境?
機器人程序設計之如何正確入門ROS | 硬創公開課(附視頻)
Pwn2Own 有Unix/Linux系統的機器被攻破么?
遷移linux系統到新硬碟

TAG:求職 | Linux | C編程語言 |