Linux的開發工具

簡單的來講,編譯器就是講“高級語言”翻譯爲“低級語言”,也就是“機器語言”。
常用的文本編譯器:vim, Emacs, Notepad++,TextMate,Sublime Text

vim:vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器。
Emacs:Emacs即Editor MACroS(宏編輯器),是一種文本編輯器,在程序員和其他以技術工作爲主的計算機用戶中廣受歡迎。
Notepad++:Notepad++是一款非常有特色的編輯器,開源軟件,可免費使用。內置支持多達27種語法高亮度顯示(包括各種常見的源代碼、腳本,能夠很好地支持.nfo文件查看),還支持自定義語言。
TextMate:TextMate是Mac平臺下的著名的編輯器,與BBedit一起並稱蘋果機上的emacs和vim。
Sublime Text:Sublime Text具有漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具Sublime Text是一個跨平臺的編輯器,同時支持Windows、Linux、Mac OS X等操作系統。

常用的編譯器:Visual C++ 6.0,Visual Studio,gcc,EGCS,PGCC

Visual C++ 6.0: Visual C++6.0以擁有“語法高亮”,自動編譯功能以及高級除錯功能而著稱。Windows平臺下的一款編譯器。
Visual Studio:VS是一個基本完整的開發工具集,它包括了整個軟件生命週期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。所寫的目標代碼適用於微軟支持的所有平臺。
gcc:gcc起初是 GNU 推出的 C語言編譯器,用於類 Unix 系統下的編程,所以名爲 GNU C Compiler 。隨着衆多自由開發者的加入,gcc 發展迅速,如今已成爲一個支持衆多語言的編譯器了,其中包括 C、C++、Ada、Object C 和 Java 等等,不過,gcc 通常用來編譯 C 程序和 C++ 程序,編譯 C 程序一般用 gcc,編譯 C++ 程序則用 g++。

爲什麼調試時要編譯選項中添加-g?

用gdb調試時必須在編譯選項後添加-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之外,其它的選項必須有一個被指定。

種類型的ELF文件

可重定位文件:用戶和其他目標文件一起創建可執行文件或者共享目標文件,例如lib*.a文件。
可執行文件:用於生成進程映像,載入內存執行,例如編譯好的可執行文件a.out。
共享目標文件:用於和其他共享目標文件或者可重定位文件一起生成elf目標文件或者和執行文件一起創建進程映像,例如lib*.so文件。

ELF文件作用

ELF文件參與程序的連接(建立一個程序)和程序的執行(運行一個程序),所以可以從不同的角度來看待elf格式的文件:

如果用於編譯和鏈接(可重定位文件),則編譯器和鏈接器將把elf文件看作是節頭表描述的節的集合,程序頭表可選。
如果用於加載執行(可執行文件),則加載器則將把elf文件看作是程序頭表描述的段的集合,一個段可能包含多個節,節頭表可選。
如果是共享文件,則兩者都含有。

ELF文件總體組成

elf文件頭描述elf文件的總體信息。包括:系統相關,類型相關,加載相關,鏈接相關。

系統相關表示:elf文件標識的魔術數,以及硬件和平臺等相關信息,增加了elf文件的移植性,使交叉編譯成爲可能。
類型相關就是前面說的那個類型。
加載相關:包括程序頭表相關信息。
鏈接相關:節頭表相關信息。

rpm和yum的區別?

rpm是由紅帽公司開發的軟件包管理方式,使用rpm我們可以方便的進行軟件的安裝、查詢、卸載、升級等工作。但是rpm軟件包之間的依賴性問題往往會很繁瑣,尤其是軟件由多個rpm包組成時。
Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

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