linux應用開發詳解
A. 在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
踩
B. linux平台下的應用程序開發
Linux是一種自由和開放源代碼的類UNIX操作系統。該操作系統的內核由林納斯·托瓦茲在1991年10月5日首次發布。,在加上用戶空間的應用程序之後,成為Linux操作系統。Linux也是自由軟體和開放源代碼軟體發展中最著名的例子。只要遵循GNU通用公共許可證,任何個人和機構都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發布。大多數Linux系統還包括像提供GUI界面的X Window之類的程序。除了一部分專家之外,大多數人都是直接使用Linux發布版,而不是自己選擇每一樣組件或自行設置。
嚴格來講,術語Linux只表示操作系統內核本身,但通常採用Linux內核來表達該意思。Linux則常用來指基於Linux內核的完整操作系統,包括GUI組件和許多其他實用工具。由於這些支持用戶空間的系統工具和庫主要由理查德·斯托曼於1983年發起的GNU計劃提供,自由軟體基金會提議將該組合系統命名為GNU/Linux,但Linux不屬於GNU計劃。
Linux最初是作為支持英特爾x86架構的個人電腦的一個自由操作系統。目前Linux已經被移植到更多的計算機硬體平台,遠遠超出其他任何操作系統。Linux可以運行在伺服器和其他大型平台之上,如大型主機和超級計算機。世界上500個最快的超級計算機90%以上運行Linux發行版或變種,包括最快的前10名超級電腦運行的都是基於Linux內核的操作系統。Linux也廣泛應用在嵌入式系統上,如手機(Mobile Phone)、平板電腦Tablet、路由器Router、電視TV和電子游戲機等。在移動設備上廣泛使用的Android操作系統就是創建在Linux內核之上。
C. Linux軟體開發,這個說法具體是什麼意思
你好!
就是基於linux操作系統開發軟體,比如linux驅動開發,diagnostic以及linux系統工具開發等等
如果對你有幫助,望採納。
D. linux開發要學什麼
第一條:運維應用-->系統架構-->運維開發-->系統開發
第二條:運維應用-->應用dba-->架構dba-->開發DBA
下面詳細每個階段的職位說明:
01.運維應用級別:
這個階段就是玩別人的軟體,例如:linux,nginx,mysql,php,nagios 大多數的linux運維工程師,網路工程師,系統工程師都是這個階段。 這個階段屬於金字塔的底端,工資是相對比較低的。
02.系統架構級別:
這個階段就是用已知軟體架構大規模集群方案以及實現各種技術方案,屬於運維應用上層,需要靠技術,溝通,思想三條線通力配合才能達到這個水平。
03.運維開發級別:
這個階段就是利用已知語言,開發基本的應用層工具,例如:web管理系統,如果具備前兩個運維應用和系統架構的積淀,這個是很輕松可以實現的。
04.系統開發級別:
這個階段就是修改開源的軟體,或者開發新的服務軟體(例如:也開發一個web軟體,存儲軟體)與底層軟體(例如:OS),是更高一層的開發人員。
05.資料庫管理和架構:
這個階段就是也主要是玩別人的軟體,但是數據相對更重要,要求有一定的運維應用的能力。
以上是常規的Linux發展路線,對於想學Linux運維,或正處於Linux運維相關工作的人員,可以根據自身的情況進行定位,選擇適合自己的發展路線,往往可以在職場上更加得心應手!
E. Linux主要應用在哪些方面
主要用於企業伺服器端,下面詳細介紹Linux有哪些崗位、主要的工作內容及職業發展,希望對你有所幫助。
1) Linux運維崗位及工作內容
互聯網Linux運維工程師是一個融合多學科(網路、系統、開發、資料庫、安全、存儲等)的綜合性技術崗位,甚至還需要溝通、為人處世、培訓、銷售、管理等非技術能力,這給運維工程師提供了一個廣闊的發展空間。
2) Linux運維工程師崗位職責
一般從企業入門到中級Linux運維工程師的工作大致有:挑選IDC機房及帶寬、購買物理伺服器或雲服務、購買及使用CDN服務、搭建部署程序開發及用戶的訪問系統環境(例如:網站運行環境)、對數據進行備份及恢復、處理網站運行中的各種故障(例如:硬體故障、軟體故障、服務故障、數據損壞及丟失等)、對網站的故障進行監控、解決網站運行的潛在安全問題、開發自動化腳本程序提高工作效率、規劃網站架構、程序發布流程和規范,制定運維工作制度和規范、配合開發人員部署及調試產品研發需要的測試環境、代碼發布等工作需求,公司如果較小可能還會兼職網管、網路工程師、資料庫管理員、安全工程師、技術支持等職責。
涉及到的Linux平台上的運維工具有:Linux系統,Linux基礎命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,,K8S,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,網路基礎,Shell/Python開發基礎等,除此之外還可能涉及到交換機、路由器、存儲、安全、開發等知識。
運維工程師還包括一些低端的崗位,例:網路管理員、監控運維、IDC運維,值班運維
職業發展方向:Linux運維工程師、系統架構師、資料庫工程師、運維開發工程師、系統網路安全工程師、運維經理、運維總監
3) Linux中級運維工程師應用軟體階段。
Linux系統,Linux基礎命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,網路基礎,Shell/Python開發基礎
4)Linux運維架構師崗位職責
運維架構師是運維工程師的高級階段,並沒有明確的崗位界限區分,運維架構師一般來說是除了對運維工程師應用的開源工具熟練掌握之外,更多的是用思想來運維了,即DevOps的落地,各種企業運行過程中的解決方案提出和執行,例如:根據公司的現狀可以設計各類運維解決方案的能力:
1、自動化代碼上線(SVN/GIT+Jenkins+MVN)解決方案;
2、雲計算部署架構及Docker微服務架構方案;
3、服務自動化擴容方案(KVM/OpenStack/Docker+Ansible+Zabbix);
4、10萬並發的網站架構、秒殺系統的架構及解決發你個案;
5、多IDC機房互聯方案、全網數據備份解決方案、賬號統一認證方案;
6、資料庫、存儲及各重要服務節點的集群和高可用方案。
7、各網路服務的極端優化方案、服務解耦/拆分。
8、運維流程、制度、規范等的建設和推行。
9、溝通能力、培訓能力、項目管理、業務需求分析及落地執行力等。
這里僅舉幾個例子,實際工作中會有更多,運維架構師的工作,其實就是解決企業中的用戶訪問量不斷增大帶來的痛點,最終達到高效、優質的為客戶提供網站及業務服務。
總的來說:Linux運維架構師更多的是根據企業日益增長的訪問量需求,利用若干運維工具組合加上經驗思想,形成解決業務需求方案的階段,當然也不排除對運維工具進行二次開發以及可視化展示運維數據的階段(開發軟體平台),這個階段涉及的工具會非常多,幾乎市面好用的開源工具都在備選之列,在一線城市互聯網公司的薪資范圍15000-50000/月。
職業方向:高級資料庫工程師、運維開發工程師、運維經理、運維總監、技術總監
運維架構師:將多個工具組合,加上思想經驗,形成方案,用思想和經驗賺錢的階段。
技術的提升僅是量的積累,思想的提升才是質的飛躍!——老男孩
5)資料庫運維工程師
眾所周知,數據幾乎是所有企業的生命線,所以資料庫工程師的地位和薪水一般會比普通運維工程師高一些,主要工作內容就是保證資料庫數據的安全以及高效地為用戶提供各種服務。工作內容主要有:資料庫環境搭建、資料庫優化、資料庫
F. 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.系統級別的驅動編寫//到此 開發工程師初步形成。然後就是不停的練就慢慢成為高級了。
G. 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各種性能指標
H. LINUX培訓的課程詳解
Linux 基礎
安裝Linux操作系統 ; Linux文件系統 ; Linux常用命令 ; Linux啟動過程詳解 ; 熟悉Linux服務能夠獨立安裝Linux操作系統 ; 能夠熟練使用Linux系統的基本命令 ; 認識Linux系統的常用服務安裝;Linux操作系統; Linux基本命令實踐 ; 設置Linux環境變數; 定製Linux的服務 ; Shell 編程基礎使用vi編輯文件 ; 使用Emacs編輯文件; 使用其他編輯器,經典教程如鳥哥私房菜、馬哥Linux等。
Shell 編基礎
Shell簡介 ; 認識後台程序Bash編程熟悉Linux系統下的編輯環境 ; 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 ; 熟悉Emacs的基本操作 ; 比較不同shell的區別 ; 編寫一個測試伺服器是否連通的shell腳本程序 ; 編寫一個查看進程是否存在的shell腳本程序 ; 編寫一個帶有循環語句的shell腳本程序。
Linux 下的 C
linux C語言環境概述 ; Gcc使用方法 ;Gdb調試技術; Autoconf Automake Makefile 代碼優化; 熟悉Linux系統下的開發環境; 熟悉Gcc編譯器 ;熟悉Makefile規則編寫Hello,World程序; 使用 make命令編譯程序; 編寫帶有一個循環的程序; 調試一個有問題的程序。
嵌入式開發
嵌入式系統概述 ;交叉編譯 配置TFTP服務; 配置NFS服務 ;下載Bootloader和內核; 嵌入式Linux應用軟體開發流程熟悉嵌入式系統概念以及開發流程; 建立嵌入式系統開發環境製作cross_gcc工具鏈 ;編譯並下載U-boot 編譯並下載Linux內核 ;
I. 學習嵌入式Linux怎麼應用開發
提供一下幾種方案
一、還按照《嵌入死linux應用開發完全手冊》(韋東山)的內容來,但是嵌入式linux的開發環境自己搭建。當時我是按照《鳥哥的私房菜-基礎篇》和《鳥哥的私房菜-伺服器篇》兩篇,整出一套開發平台,CentOS5.3 + samba/vsftpd + gcc / linux-gcc 。 window平台上的工具sourceinsight、secureCRT。 注意:我使用了四個月學會linux操作。不知道你是否會先學這兩本書,再學習韋東山老師的嵌入式呢。學完之後看似學習了很多,出來外面之後,我又去在windows平台開發,而且現在用C#。囧。現在看什麼嵌入式系統都非常快,很容易理解架構,如何實現。可惜自己太年輕,沒有資本和人脈,不然可以實現很多有意思的東西。現在正在嘗試創業。
二、尋找開發板,而不是書籍作為實驗的途徑。書籍只是輔助,輔助你實現某種功能。可以集中linux書籍、嵌入式開發書籍、單片機開發、編程語言。宋寶華的嵌入式書籍。開發板當時用的是飛凌的,由國嵌負責技術講解和培訓。講了不少有用的東西。現在網上的開發板多,可以淘,但是不用太貴,作用不大。找前衛的技術開發,中國看似不行。前衛老師都沒搞出什麼東西,我們在基本是0基礎的前提下,很難實現比較前衛的技術。打好基礎,看似是唯一的選擇。
三、單獨找台PC機,直接安裝ubuntu11,買本ubuntu相關的書,他會交你怎樣安裝使用工具的。其實和第一種解決方式是一樣的,書是別人在五(六)年前寫的,不符合摩爾定理。所以沒辦法,我們在嵌入式方面的教育還是欠缺啊,出的書都少,記那麼基本,還全是個人。沒有什麼教育機構。
希望以上對你有用。