linux基礎2


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

1.gedit

   gedit無需多言,Linux各個發行版默認都有的編輯器,類似於Windows的記事本,不過可以根據代碼類型着色,這點可比記事本牛逼多了,不過我一直沒有搜索到如何配置gedit才能讓他顯示行號和改變tab爲4個空格,所以不是迫不得已不會用gedit編輯正式文件。

2.Light Table

Light Table是一個免費開放源代碼的編輯器,該編輯器有一個非常乾淨的界面,並有大量擴展。它與Windows、Mac和Linux都兼容,是高度可定製的。使用Light Table,開發者只需打開一個瀏覽器窗口即可實時查看更改,並且支持不同的嵌入。

3.Eclipse

   Eclipse是一款很酷的開源代碼編輯器,同時它也是最受程序員親睞的代碼編輯器之一,它擁有代碼高亮和智能提示等強大的功能。在Eclipse中,你可以完全勝任以下編程語言的工作—&mdash、ython, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是非常著名的Java集成開發環境,甚至提供了對Java 8的支持。在一些Web開發IDE特性的幫助下,你可以非常方便地對代碼文件進行組織和訪問。

4.Notepad++

    Notepad++有很好的理由成爲許多WordPress開發人員的首選。這個輕量級的代碼編輯器是開源的,可以自由使用。該編輯器最好的一點是,它是新手和專家的理想選擇。支持的的語言列表包括WordPress開發人員在開發複雜項目過程中所需的一切。Notepad++的其他功能包括:重點語法突出 ·支持FTP ·外部插件 ·跨平臺兼容性 ·代碼和文本摺疊 ·編譯器集成

5.Emacs
        有句誇張的話說:Emacs是僞裝成編輯器的操作系統。細細想來,這句話並不誇張。
        Emacs其實是個Lisp的解釋器,因此可以用Lisp靈活地擴展。 Lisp是什麼東西,這同樣是種很有生命力的編程語言。在C語言還沒有發明的年代,MIT的人工智能實驗室寫ITS操作系統時,一部分用的是彙編語言,還有一部分就是用的Lisp。現在,Lisp仍在人工智能研究領域廣泛使用着。
        有這麼牛逼的擴展語言,註定Emacs向着無所不能的方向發展。漸漸地,人們用Emacs不再限於寫程序,寫文檔,而且在Emacs裏管理文件系統,運行終端,收郵件,上網,聽音樂……,真是一發不可收拾。甚至,有人用Emacs控制咖啡機煮咖啡。
        這種大而全的擴展,背離了“一個程序只做一件事並做好它”的 Unix哲學,被Unix的忠誠用戶所詬病。可是真的背離了嗎? Emacs說過自己是一個編輯器嗎?

        正是因爲Emacs的無敵的可擴展性,人們才分不清Emacs到底是不是一個編輯器了。但,就是有人喜歡這種All-in-One的哲學,喜歡在Emacs中完成每件事。所以纔會有人寫《生活在Emacs中》,所以, Emacs纔會成爲一種信仰.

 

2.除了gcc, 還有哪些常用的牛逼的編譯器

 

MSVC

    Windows平臺上最常用的編譯器,在C++編譯器聖戰中的勝利者,一個常被人詬病的是對標準的支持不夠新不夠快(最近開始逐步加快了)。隨着微軟發佈基於Clang / C2,這一條路以後若成功,MSVC與Clang / C2並行,甚至逐步逐步退出舞臺,都是有可能的事情。

Clang

    重點介紹。licence極度友好,代碼質量非常棒,採用的IR爲LLVM IR非常優秀,各大公司逐步發力在Clang上,包括不限於微軟,IBM,Nvidia等,各大公司也在開始瘋狂的往Clang / LLVM交代碼(圈地),也開始往Clang實現OpenMP,Nvidia GPU等支持,目前在趕超GCC的道路上一路激情的狂奔,前途一片光明。但是Clang依賴於的LLVM,目前的性能無法與GCC相提辯論,在Benchmark性能測試上幾乎沒有勝利的項目,優化的道路上任重道遠,同時一些開源軟件沒有辦法編譯過去,主要是缺乏對GCC 一些Builtin函數、自身帶的彙編器的孱弱導致。

GCC/G++

    跨體系結構很多,很多開源軟件默認編譯器都是GCC/G++,這一點上Clang比不上。

ICC    

    沒有自己專門的前端(傳說中的外包),而且是針對Intel體系結構上專門優化。

IBM XL C++

    在IBM特定硬件與平臺上表現非常牛逼,Benchmark性能測試非常優秀,其最初的設計思想就是爲了性能,其最高優化級別可以達到O5,帶來的缺點則是在編譯時間上往往過長。而另外一個常被人詬病的是對C++標準的支持、開源軟件的支持、錯誤信息的提示上都不夠友好,然而從13.2開始,隨着IBM採用Clang融合方案,目前這幾項都得到有效改良,然而融合的道路也必定是漫長的,以前的歷史包袱等也需要背上。

 

3.爲什麼調試的時候需要編譯選項中添加 -g. 自行調研readelf命令

    調試的時候需要編譯選項中添加 -g. 加選項-g是爲了能夠調試。不加可以運行,但不能調試。

    readelf

    readelf命令用來顯示一個或者多個elf格式的目標文件的信息,可以通過它的選項來控制顯示哪些信息.

 

    命令參數:    <1>-h或者--file-header。顯示在elf文件頭裏包含的所有信息。

                             <2>-l  顯示程序頭表信息, 包括有幾個段,每個段的屬性,以及每個段中包含有哪幾個節

                             <3>-S  顯示節區表內所有的信息,包括每個節的屬性

                             <4>-h 顯示所有頭的信息,包括elf文件頭,程序頭和節頭,即“-l,-h,-S”的組合。

                             <5>-s 顯示符號表的信息,包含靜態符號表和動態符號表。如果指關心動態符號表,可以直接用“-d”。

                             <6>-r 顯示所有定位入口的信息。

4.在Linux下實現進度條程序. 通過makefile進行編譯

依次輸入命令如下:

1. vim proc_bar.c(輸入如下代碼...)

 

2.將代碼保存並退出

3..vim Makefile(輸入如下命令...)

4.保存並退出

5.make

6../proc_bar

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章