關於Linux開發工具的一些問題調研總結
除了vim, 還有哪些常用的牛逼的編輯器, 並能夠橫向對比編輯器之間的區別和優缺點:
1.Vim
Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。和Emacs並列成為類Unix系統使用者最喜歡的編輯器。 2. Eclipse
Eclipse是一款很酷的開原始碼編輯器,它擁有程式碼高亮和智慧提示等強大的功能。在Eclipse中,完全勝任以下程式語言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java整合開發環境,甚至提供了對Java 8的支援。在一些Web開發IDE特性的幫助下,你可以非常方便地對程式碼檔案進行組織和訪問。 3.Brackets
Brackets也是一款為Linux開發者設計的開原始碼編輯器,使用Brackets寫程式碼,你不會被任何事情所打斷。比如在寫HTML程式碼時,即便你沒有儲存程式碼也可以及時預覽你的Web頁面效果。你也可以使用Theseus來檢查變數,Brackets預設提供一種主題,當然你也可以在擴充套件中心獲取更多的主題。 4.Emacs
Emacs不僅僅是一個編輯器,他是一個整合環境,或可稱它為整合開發環境,這些功能如讓使用者置身於全功能的作業系統中。Emacs不僅可以作為文字編輯器,還可以用來收發電子郵件、通過FTP/TRAMP編輯遠端檔案、通過Telnet登入主機、上新聞組、登陸IRC和朋友交流、檢視日曆等功能 5.Light Table
LightTable是一個免費開放原始碼的編輯器,該編輯器有一個非常乾淨的介面,並有大量擴充套件。它與Windows、Mac和Linux都相容,是高度可定製的。使用Light Table,開發者只需開啟一個瀏覽器視窗即可實時檢視更改,並且支援不同的嵌入。 6.Chocolat
Chocolat本身是Mac OS X的最佳程式碼編輯器。該編輯器旨在與OS無縫整合,Chocolat為JS、Python和HTML提供拖放功能、拆分編輯、程式碼摺疊和程式碼完成。 7.Sublime Text
一個緊湊但效能較高的程式碼編輯器一個跨平臺的程式碼編輯器,適用於所有WordPress專案。 Sublime Text有很多功能可以提供: ·指令碼程式設計 ·自定義介面 ·常規檔案切換 ·合成和錯誤檢測 ·多媒體選擇和編輯 ·外部外掛整合 ·Themes
調研除了gcc, 還有哪些常用的牛逼的編譯器(不限制程式語言, 不限制平臺):
1.MSVC,Windows平臺上最常用的編譯器,在C++編譯器聖戰中的勝利者,一個常被人詬病的是對標準的支援不夠新不夠快(最近開始逐步加快了)。隨著微軟釋出基於Clang / C2,這一條路以後若成功,MSVC與Clang / C2並行,甚至逐步逐步退出舞臺,都是有可能的事情。
2.Clang,重點介紹。licence極度友好,程式碼質量非常棒,採用的IR為LLVM IR非常優秀,各大公司逐步發力在Clang上,包括不限於微軟,IBM,Nvidia等,各大公司也在開始瘋狂的往Clang / LLVM交程式碼(圈地),也開始往Clang實現OpenMP,Nvidia GPU等支援,目前在趕超GCC的道路上一路激情的狂奔,前途一片光明。但是Clang依賴於的LLVM,目前的效能無法與GCC相提辯論,在Benchmark效能測試上幾乎沒有勝利的專案,優化的道路上任重道遠,同時一些開源軟體沒有辦法編譯過去,主要是缺乏對GCC 一些Builtin函式、自身帶的彙編器的孱弱導致。
3.GCC/G++,跨體系結構很多,很多開源軟體預設編譯器都是GCC/G++,這一點上Clang比不上。
4.ICC,沒有自己專門的前端(傳說中的外包),而且是針對Intel體系結構上專門優化。
5.IBM XL C++,在IBM特定硬體與平臺上表現非常牛逼,Benchmark效能測試非常優秀,其最初的設計思想就是為了效能,其最高優化級別可以達到O5,帶來的缺點則是在編譯時間上往往過長。而另外一個常被人詬病的是對C++標準的支援、開源軟體的支援、錯誤資訊的提示上都不夠友好,然而從13.2開始,隨著IBM採用Clang融合方案,目前這幾項都得到有效改良,然而融合的道路也必定是漫長的,以前的歷史包袱等也需要背上。
為什麼除錯的時候需要編譯選項中新增 -g. 同學們自行調研readelf命令.:
用gdb進行除錯糾錯前必須要在編譯選項中新增“-g”,“-g”標誌是對程式進行除錯性編譯時常用的選項。我們需要給每一個需要除錯的原始檔都加上這個選項。它將使用特殊版本的C語言標準庫完成編譯和連結操作,給庫函式加上程式除錯方面的支援。編譯器會把這些標誌自動傳給連結器 除錯的時候需要編譯選項中新增 -g. 加選項-g是為了能夠除錯。不加可以執行,但不能除錯
readelf命令
用來顯示一個或者多個elf格式的目標檔案的資訊,可以通過它的選項來控制顯示哪些資訊。這裡的elf-file(s)就表示哪些被檢查的檔案。可以支援32位,64位的elf格式檔案,也支援包含elf檔案的文件(這裡一般指的是使用ar命令將一些elf檔案打包之後生成的例如lib*.a之類的“靜態庫”檔案)。這個程式和objdump提供的功能相似,但是它顯示的資訊更為具體,並且它不依賴BFD庫(BFD是一個GNU專案,它的目標就是希望通過一種統一的介面來處理不同的目標檔案),所以即使BFD庫有什麼bug存在的話也不會影響到readelf程式。執行readelf時,除了-v和-H之外,其他的選項必須有一個被指定。
命令引數:
<1> -h 或者–file-header。顯示在elf檔案頭裡包含的所有資訊。
<2> -l 顯示程式頭表資訊, 包括有幾個段,每個段的屬性,以及每個段中包含有哪幾個節
<3> -S 顯示節區表內所有的資訊,包括每個節的屬性
<4> -h 顯示所有頭的資訊,包括elf檔案頭,程式頭和節頭,即“-l,-h,-S”的組合。
<5> -s 顯示符號表的資訊,包含靜態符號表和動態符號表。如果指關心動態符號表,可以直接用“-d”。
<6> -r 顯示所有定位入口的資訊。
同學們自行調研Linux下軟體安裝的幾種方式(原始碼安裝, rpm安裝, yum安裝). 重點要理解rpm安裝和yum安裝的區別. :
(1)yum安裝可以看成是從網路線上安裝的一種方式,只需要yum install 軟體名,系統就自動根據yum源配置檔案中的映象位置去下載安裝包了,並可以自動分析所需的軟體依賴關係,自動安裝所需的依賴軟體包。此方式適合初學者,簡單方便,不用考慮依賴關係。但有些軟體並不能通過yum來安裝。 (2)而原始碼安裝方式是需要自己到網上下載原始碼包,然後解壓安裝。此方式可以指定配置引數,更加靈活方便,相容性更強。比較適合對Linux系統有較多瞭解的進階使用者使用。 (3)rpm是安裝本地存在的rpm包,如果存在依賴也需要安裝上,如果某個rpm是自己修改編譯的,那麼只能用rpm安裝了