linux開發
Ⅰ linux是誰開發出來的
Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。Linux有上百種不同的發行版,如基於社區開發的debian、archlinux,和基於商業開發的Red
Hat Enterprise Linux、SUSE、oracle linux等。
Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux不僅僅是被網路運維人員當作伺服器使用,它還被當作伺服器,甚至當作網路防火牆,這是Linux的一大亮點。
Linux具有開放源碼、沒有版權、技術社區用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協議棧,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。
Ⅱ linux軟體開發如何入門
要想在linux下面編程,首先得熟習linux的使用才行,學習的大體過程我描迅在下面,希望對你有幫助:1.鳥哥的私房菜基礎篇。這是學習linux系統的使用。2.....................伺服器篇。可以看些簡單的伺服器構建:tftp,ftp,nfs,dhcp.以後用的到。3.shell編程及高級編程。這里可以了解,不一定深入。有個概念就好了。4.c語言編程(c program plus 第五版,C與指針,C專家編程,C陷阱,這幾本書是經典之作)5.gcc ,make ,ctags,dbg的使用以及makefile的編寫(這一步與4同步進行)6.unix 高級環境編程 (這是書名,也是你要學的)7.QT的編寫,或則GTK 的編寫(這是圖形界面的開始)至此軟體工程師結束(下面是開發工程師要繼續的)8.gun arm的使用,交叉編譯環境的搭建9.arm 下面的編程與qtopia的搭建。包括qt/em....led(記不下來,你自己搜下)交叉編譯環境的搭建(完成arm上面的圖形化)10.對arm 開發板的熟悉。11.gun arm匯編的編寫與內嵌匯編的編寫12.u-boot下面驅動的編寫(根據晶元手冊來編寫)13.u-boot的移植,這里也可以用vivi14.kernel的裁減與移植15.文件系統的構建與移植16.系統級別的驅動編寫//到此 開發工程師初步形成。然後就是不停的練就慢慢成為高級了。推薦書籍《鳥哥的linux私房菜》《linux就該這么學》
Ⅲ 自己如何開發linux
說明:
你至少要學會一種對應的編程語言,如:C、C++、Shell編程等。
推薦參考書目:
1. 《Linux系統與網路服務管理 技術大全(第二版)》楊明華 譚勵等編著 電子工業出版社 79元 含光碟一張;
2. 《Linux系統管理與網路管理》 余柏山等編著 清華大學出版社 89元 含光碟一張。
讀完這兩本書,基本上就夠用了。
建議:
1. 最好在系統中先安裝VMware虛擬機,然後在虛擬機中安裝Redhat Enterprise Linux 5等Linux系統;
2. 在虛擬機的Linux系統中進行各種測試,這樣就算有問題也沒有什麼關系;
3. 個人推薦Redhat Enterprise Linux 5(RHEL 5),這在企業中應用非常廣泛。
Ⅳ linux開發工程師開發什麼的
一:C語言:嵌入式Linux開發工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域重要也是主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
二:Linux基礎:Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
三:Linux系統編程:重點學習標准I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
四:Linux網路編程:計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網路發展、TCP/IP協議、socket編程、TCP網路編程、UDP網路編程、Web編程開發等方面入手,全面了解Linux網路應用程序開發。重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
五:數據結構與演算法:數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
六:C++ 、QT:C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平台、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、滑鼠、鍵盤及繪圖事件處理及文件處理的應用。
七:Cortex A8 、Linux 平台開發:通過基於ARM Cortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
八:驅動開發:驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
以上內容就是linux開發工程師主要會干什麼,看上去挺多的吧。事實上linux的學習是一步一步循序漸進的,慢慢的就會發現,一切都順理成章。還在猶豫要不要學習?趕緊開始吧!
更多Linux知識可參考《Linux就該這么學》。
Ⅳ linux上做什麼開發
可以做很多開發啊。有PC軟體開發、嵌入式產品開發、網路運維、伺服器管理等方向。
可以做系統功能、內核驅動方面的開發,GUI界面上的開發,自動化測試方面的腳本開發,都可以啊,應用非常廣泛。開發語言可以是C語言、C++語言,還可以是Shell腳本、Expect腳本、Perl腳本、Python腳本等。所以說,你這個問題涉及面非常廣。
現在很多通信、醫療、軍工、家用電器設備都使用嵌入式Linux系統,即可裁剪的、運行於移動設備端的Linux系統,Android、IOS歸根結底,都可算作是Linux平台的東西。當然,也可以基於自由的Linux平台來自主開發,有很多第三方庫可以拿來直接用。
開源平台,無與倫比的自由;開源社區,無窮無盡的支持。
Ⅵ Linux開發需要什麼呢需要具備什麼基礎呢
一、linux和os:
1、命令:netstat tcpmp ipcs ipcrm 這四個命令的熟練掌握程度基本上能體現實際開發和調試程序的經驗
2、cpu 內存 硬碟 等等與系統性能調試相關的命令必須熟練掌握,設置修改許可權 tcp網路狀態查看 各進程狀態 抓包相關等相關命令 必須熟練掌握
3、awk sed需掌握
4、共享內存的使用實現原理、然後共享內存段被映射進進程空間之後,存在於進程空間的什麼位置?共享內存段最大限制是多少?
5、c++進程內存空間分布(注意各部分的內存地址誰高誰低,注意棧從高道低分配,堆從低到高分配)
6、ELF是什麼?其大小與程序中全局變數的是否初始化有什麼關系(注意.bss段)
7、使用過哪些進程間通訊機制,並詳細說明
8、makefile編寫,雖然比較基礎,但是會被問到
9、gdb調試相關的經驗,會被問到
10、如何定位內存泄露?
11、動態鏈接和靜態鏈接的區別
12、32位系統一個進程最多多少堆內存
13、多線程和多進程的區別(重點 必須從cpu調度,上下文切換,數據共享,多核cup利用率,資源佔用,等等各方面回答,然後有一個問題必須會被問到:哪些東西是一個線程私有的?答案中必須包含寄存器,否則悲催)
14、寫一個c程序辨別系統是64位 or 32位
15、寫一個c程序辨別系統是大端or小端位元組序
16、信號:列出常見的信號,信號怎麼處理?
17、i++是否原子操作?並解釋為什麼???????
18、說出你所知道的各類linux系統的各類同步機制(重點),什麼是死鎖?如何避免死鎖(每個技術面試官必問)
19、列舉說明linux系統的各類非同步機制
20、exit() _exit()的區別?
21、如何實現守護進程?
22、linux的內存管理機制是什麼?
23、linux的任務調度機制是什麼?
24、標准庫函數和系統調用的區別?
25、補充一個問題:系統如何將一個信號通知到進程?
二、c語言:
1、宏定義和展開(必須精通)
2、位操作(必須精通)
3、指針操作和計算(必須精通)
4、內存分配(必須精通)
5、各類庫函數必須非常熟練的實現
6、哪些庫函數屬於高危函數,為什麼?(strcpy等等)
三、c++:
1、一個String類的完整實現必須很快速寫出來(注意:賦值構造,operator=是關鍵)
2、虛函數的作用和實現原理(必問必考,實現原理必須很熟)
3、sizeof一個類求大小(注意成員變數,函數,虛函數,繼承等等對大小的影響)
4、指針和引用的區別(一般都會問到)
5、多重類構造和析構的順序
6、stl各容器的實現原理(必考)
7、extern c 是幹啥的,(必須將編譯器的函數名修飾的機制解答的很透徹)
8、volatile是幹啥用的,(必須將cpu的寄存器緩存機制回答的很透徹)
9、static const等等的用法,(能說出越多越好)
四、數據結構或者演算法:
1、《離散數學》范圍內的一切問題皆由可能被深入問到(最重要,最體現功底,最能加分,特別是各類樹結構的實現和應用)
2、各類排序:大根堆的實現,快排(如何避免最糟糕的狀態?),bitmap的運用等等
3、hash, 任何一個技術面試官必問(例如為什麼一般hashtable的桶數會取一個素數?如何有效避免hash結果值的碰撞)
五、網路編程:
1、tcp與udp的區別(必問)
2、udp調用connect有什麼作用?
3、tcp連接中時序圖,狀態圖,必須非常非常熟練
4、socket服務端的實現,select和epoll的區別(必問)
5、epoll哪些觸發模式,有啥區別?(必須非常詳盡的解釋水平觸發和邊緣觸發的區別,以及邊緣觸發在編程中要做哪些更多的確認)
6、大規模連接上來,並發模型怎麼設計
7、tcp結束連接怎麼握手,time_wait狀態是什麼,為什麼會有time_wait狀態?哪一方會有time_wait狀態,如何避免time_wait狀態佔用資源(必須回答的詳細)
8、tcp頭多少位元組?哪些欄位?(必問)
9、什麼是滑動窗口(必問)
10、connect會阻塞,怎麼解決?(必考必問,提示:設置非阻塞,返回之後用select檢測狀態)
11、如果select返回可讀,結果只讀到0位元組,什麼情況?
12、keepalive 是什麼東東?如何使用?
13、列舉你所知道的tcp選項,並說明其作用。
14、socket什麼情況下可讀?
六、db:
1、mysql,會考sql語言,伺服器資料庫大規模數據怎麼設計,db各種性能指標
Ⅶ Linux系統是哪家公司開發的
Linux 是一個操作系統,就像windows一樣。它不屬於任何公司,屬於完全開放的。最早由Linus
Torvalds編寫了內核,後來很多優秀的程序員參與了這一工作。現在看到的不同版本只是不同發
行版而已,比較有名的有Redhat,SUSE, Debian等等,只要是將linux內核,驅動,應用軟體打
包發行的,本質上都是可以免費獲得源代碼的。
(7)linux開發擴展閱讀:
Linux操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:Unix操作系統、MINIX操作系
統、GNU計劃、POSIX標准和Internet網路。
20世紀80年代,計算機硬體的性能不斷提高,PC的市場不斷擴大,當時可供計算機選用的操作系
統主要有Unix、DOS和MacOS這幾種。Unix價格昂貴,不能運行於PC;DOS顯得簡陋,且源代
碼被軟體廠商嚴格保密;
MacOS是一種專門用於蘋果計算機的操作系統。此時,計算機科學領域迫切需要一個更加完善、
強大、廉價和完全開放的操作系統。由於供教學使用的典型操作系統很少,因此當時在荷蘭當教
授的美國人AndrewS.Tanenbaum編寫了一個操作系統,名為MINIX,為了向學生講述操作系統
內部工作原理。MINIX雖然很好,但只是一個用於教學目的的簡單操作系統,而不是一個強有力
的實用操作系統,然而最大的好處就是公開源代碼。全世界學計算機的學生都通過鑽研MINIX源
代碼來了解電腦里運行的MINIX操作系統,芬蘭赫爾辛基大學大學二年級的學生Linus Torvalds就
是其中一個,在吸收了MINIX精華的基礎上,Linus於1991年寫出了屬於自己的Linux操作系統,
版本為Linux0.01,是Linux時代開始的標志。他利用Unix的核心,去除繁雜的核心程序,改寫成
適用於一般計算機的x86系統,並放在網路上供大家下載,1994年推出完整的核心Version1.0,
至此,Linux逐漸成為功能完善、穩定的操作系統,並被廣泛使用。