[英]How to get started developing on *nix
對於使用g ++和gdb的入門,是否有很好的“使用方法”或“入門”指南?
一些背景。 體面的程序員,但到目前為止,我已經在Windows中的Visual Studio中完成了所有工作。
我對使用終端來編譯文件有一點經驗(除了.h和1或2 .cpp以外)。 但是除此之外。
任何人都知道如何開始在Linux上編碼的好入門?
閱讀一些好書,特別是Advanced Linux Programming和Advanced Unix Programming 。 另請閱讀高級bash腳本指南和Linux Documentation Project中的其他文檔
顯然,在筆記本電腦上安裝一些Linux發行版(不是在某些VM中,而是在實際磁盤分區上)。 如果您有類似debian的發行版,請在其上運行aptitude build-dep gcc-4.6 gedit
,以獲取許多有趣的開發人員軟件包。
學習一些命令行技能。 學習使用man
命令; 安裝manpages
和manpages-dev
軟件包后,鍵入man man
(使用空格鍵“滾動文本”,使用q
鍵退出)。 另請閱讀intro(2)手冊頁。 如果您忘記了如何使用cp
類的命令,請嘗試cp --help
。
即使對於一個人的小型項目,也要使用git之類的版本控制系統。
備份您的文件。
閱讀有關Linux , 內核 , 系統調用 , 免費軟件 , X11 , Posix , Unix的幾個相關的Wikipedia頁面
嘗試使用命令行。 例如,嘗試在命令行上進行一周或更長時間的所有操作。 避免使用台式機,也不要使用鼠標。 學習使用emacs
。
閱讀有關GNU make之類的構建器程序的信息
從其源代碼(例如,從sourceforge或freecode或github )中檢索幾個免費軟件,並練習構建和編譯它們。 研究他們的源代碼
在命令行中(在終端中)啟動的基本技巧(如果未找到命令,則需要安裝提供該命令的軟件包)。
運行emacs
; 有一個教程菜單; 練習半個小時。
編輯helloworld.c
程序( main
調用一些hello
函數)
用gcc -g -Wall helloworld.c -o helloworld
編譯它; 改進您的代碼,直到沒有警告。 始終將-Wall
傳遞給gcc
或g++
以獲得幾乎所有警告。
用./helloworld
運行它
用gdb ./helloworld
調試它,然后
help
命令 b main
命令在main
和hello
函數中同樣添加一個斷點。 r
在gdb
下運行它 bt
獲取回溯 p
打印一些變量 c
繼續執行已調試的程序。 編寫一個小的Makefile
以便能夠使用make
來構建helloworld
程序
了解如何從Emacs內部調用make
(使用Mx compile
)和gdb
(使用Mx gdb
)
您需要學習很多東西。 我不會為您提供詳細信息,但是作為從事Unix和c / c ++開發數十年的人,我現在將嘗試為您提供一些主題。
我的主要建議是開始實驗。 用C或C ++編寫最簡單的程序(傳統上會顯示“ Hello there,world!”的字樣),並弄清楚如何從命令行進行編譯和運行。 然后,一旦有了編譯版本,就可以在調試器下啟動它,並處理斷點,打印表達式等。一旦啟動並運行了最簡單的程序,您就可以了解調試器的含義。告訴您,添加類,函數,結構或其他任何感覺都很好的小步驟,然后再次執行該循環。 與以大型程序開始相比,這種方式的執行速度要快得多。
仍然處於很高的水平,這里有一些主題您至少需要弄清楚一些。 請注意,“從頭開始學習”方法適用於以下任何主題。
g++
:它具有相當不錯的命令行語法在線文檔,盡管您一開始會發現它令人生畏,但請嘗試尋找最簡單的起點。 Vim
和emacs
是傳統的(而且功能非常強大),但是兩者的學習曲線相對較陡。 如果您周圍有人來幫助您,那就更好了。 還有其他選擇,但是作為我自己的emacs
用戶,恐怕我對它們並不熟悉。 gdb
。 它是了解程序的強大工具。 同樣,它具有廣泛的在線文檔,需要您認真閱讀。 ls
, cd
和導航unix目錄的移動基礎知識; grep
用於快速搜索源文件。 如果您的項目是多文件的,特別是如果它是一個完整學期的項目,則您還可以考慮學習以下主題。
Make
是用於描述如何編譯和鏈接多文件項目的工具,這樣您就不必每次都手動記住如何做。 不幸的是, Make
因其使用技巧而享有當之無愧的聲譽,但這在跨多個目錄的大型項目中尤其如此,並且在線上可能有很多簡單的示例。 git
或hg
之類的源代碼控制系統,即使對於一些相對較小的項目也是如此。 擁有已完成工作的存檔版本非常安全,以便您可以快速備份。 git
和hg
對於一個小的一次性項目來說都是多余的,但是值得自己學習。 我今天所了解的傳統觀點是,它們在哲學和核心功能上非常相似,但是hg
在命令行級別上肯定更加一致,因此更容易入手。 我懷疑這相當令人生畏,尤其是如果您之前實際上沒有接觸過UNIX命令環境。 我在上面再次強調了我的第一條建議:從簡單開始並嘗試進行學習。 這樣可以最大程度地減少在任何給定時間點必須纏頭的新內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.