1. 程式人生 > >除了vim, 還有哪些常用的牛逼的編輯器。 自行查詢資料, 調研除了gcc, 還有哪些常用的牛逼的編譯器,為什麼除錯的時候需要編譯選項中新增 -g在Linux下實現進度條程式

除了vim, 還有哪些常用的牛逼的編輯器。 自行查詢資料, 調研除了gcc, 還有哪些常用的牛逼的編譯器,為什麼除錯的時候需要編譯選項中新增 -g在Linux下實現進度條程式

除了vim, 還有哪些常用的牛逼的編輯器, 並能夠橫向對比編輯器之間的區別和優缺點。

首先先有一個概念IDE(整合開發環境),厲害的有vs等等。vim以及Emacs就向著這個方向發展。為了實現其強大功能。vim有了多模式編輯有(normal,insert,visual)而emacs則是選擇了複雜的快捷鍵。一般來說vim使用者居多,因為vim是內建的,所以更容易被接受。 預設的配置一般是不能滿足人們的要求的,所以得自己配置。 實現 IDE 的功能,這些配置通常包括了專案結構列表,檔案結構列表,自動跳轉,自動提示和補全,外掛管理,語法檢查,版本控制等外掛。 兩個都是編輯器,擴充套件性都很強。 emacs和vim比起來,編輯效率低下。emacs強調統一的環境,便於程式設計,裡面包含了原始碼管理,郵件收發等,最重要的是所謂與gbd出自一家,相容性好。nano只是一個類似emacs的簡單編譯器,linux下有很多文字編輯器,其中系統(不管哪個分支)都會自帶nano,但nano功能很少。 Emacs = Esc + Meta + Alt + Ctrl + Shift

自行查詢資料, 調研除了gcc, 還有哪些常用的牛逼的編譯器(不限制程式語言, 不限制平臺).

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

為什麼除錯的時候需要編譯選項中新增 -g.

預設編譯生成的可執行檔案是無法使用 gdb 來跟蹤或除錯的,因為可執行程式中沒有可供 gdb 除錯使用的特殊資訊,為了將必要的除錯資訊整合到可執行檔案中,我們便需要用到 -g 選項,這樣生成的可執行程式,倘若出現問題,便可以使用 gdb 找出問題具體出現的位置,便於問題的解決。 如下

#gcc -g test.c

“-g”標誌是對程式進行除錯性編譯時常用的選項。我們需要給每一個需要除錯的原始檔都加上這個選項。它將使用特殊版本的C語言標準庫完成編譯和連結操作,給庫函式加上程式除錯方面的支援。編譯器會把這些標誌自動傳給連結器。 加上-g選項以後,gcc在編譯是會做以下額外的操作: 1.建立符號表,符號表包含了程式中使用的變數名稱的列表。 2.關閉所有的優化機制,以便程式執行過程中嚴格按照原來的C程式碼進行。

調研readelf命令.

readelf命令用來顯示一個或者多個elf格式的目標檔案的資訊,可以通過它的選項來控制顯示哪些資訊。 ELF(Executable and Linking Format)是一個定義了目標檔案內部資訊如何組成和組織的檔案格式。核心會根據這些資訊載入可執行檔案,核心根據這些資訊可以知道從檔案哪裡獲取程式碼,從哪裡獲取初始化資料,在哪裡應該載入共享庫,等資訊。 ELF檔案有下面三種類型: 1.目標檔案

$ gcc -c test.c

得到的test.o就是目標檔案,目標檔案通過連結可生成可執行檔案。 靜態庫其實也算目標檔案,靜態庫是通過ar命令將目標打包為.a檔案。 如:ar crv libtest.a test.o 2.可執行檔案

$gcc -o test test.c 

得到的test檔案就是可執行的二進位制檔案。 3.共享庫

$ gcc test.c -fPIC -shared -o libtest.so 

得到的檔案listtest.so就是共享庫。 可以通過readelf來區分上面三種類型的ELF檔案,每種型別檔案的頭部資訊是不一樣的。

在Linux下實現進度條程式. 通過makefile進行編譯. 建議自主完成一個彩色的進度條.

首先建立一個pro_bar_color.c的檔案,編寫c語言程式碼如下: 在這裡插入圖片描述 再建立一個makefile檔案: 在這裡插入圖片描述 當執行make命令時,就會得到pro_bar_color檔案,然後用./去執行它,就會得到彩色的進度條了: 在這裡插入圖片描述