簡體   English   中英

如何開始在* nix上進行開發

[英]How to get started developing on *nix

對於使用g ++和gdb的入門,是否有很好的“使用方法”或“入門”指南?

一些背景。 體面的程序員,但到目前為止,我已經在Windows中的Visual Studio中完成了所有工作。

我對使用終端來編譯文件有一點經驗(除了.h和1或2 .cpp以外)。 但是除此之外。

任何人都知道如何開始在Linux上編碼的好入門?

閱讀一些好書,特別是Advanced Linux ProgrammingAdvanced Unix Programming 另請閱讀高級bash腳本指南Linux Documentation Project中的其他文檔

顯然,在筆記本電腦上安裝一些Linux發行版(不是在某些VM中,而是在實際磁盤分區上)。 如果您有類似debian的發行版,請在其上運行aptitude build-dep gcc-4.6 gedit ,以獲取許多有趣的開發人員軟件包。

學習一些命令行技能。 學習使用man命令; 安裝manpagesmanpages-dev軟件包后,鍵入man man (使用空格鍵“滾動文本”,使用q鍵退出)。 另請閱讀intro(2)手冊頁。 如果您忘記了如何使用cp類的命令,請嘗試cp --help

即使對於一個人的小型項目,也要使用git之類的版本控制系統。

備份您的文件。

閱讀有關Linux內核系統調用免費軟件X11PosixUnix的幾個相關的Wikipedia頁面

嘗試使用命令行。 例如,嘗試在命令行上進行一周或更長時間的所有操作。 避免使用台式機,也不要使用鼠標。 學習使用emacs

閱讀有關GNU make之類的構建器程序的信息

從其源代碼(例如,從sourceforgefreecodegithub )中檢索幾個免費軟件,並練習構建和編譯它們。 研究他們的源代碼

在命令行中(在終端中)啟動的基本技巧(如果未找到命令,則需要安裝提供該命令的軟件包)。

  • 運行emacs ; 有一個教程菜單; 練習半個小時。

  • 編輯helloworld.c程序( main調用一些hello函數)

  • gcc -g -Wall helloworld.c -o helloworld編譯它; 改進您的代碼,直到沒有警告。 始終將-Wall傳遞給gccg++以獲得幾乎所有警告。

  • ./helloworld運行它

  • gdb ./helloworld調試它,然后

    1. 使用help命令
    2. 使用b main命令在mainhello函數中同樣添加一個斷點。
    3. 使用rgdb下運行它
    4. 使用bt獲取回溯
    5. 使用p打印一些變量
    6. 使用c繼續執行已調試的程序。
  • 編寫一個小的Makefile以便能夠使用make來構建helloworld程序

  • 了解如何從Emacs內部調用make (使用Mx compile )和gdb (使用Mx gdb

了解有關valgrind的更多信息 (檢測大多數內存泄漏)。 也許考慮在某些應用程序中使用Boehm的GC

您需要學習很多東西。 我不會為您提供詳細信息,但是作為從事Unix和c / c ++開發數十年的人,我現在將嘗試為您提供一些主題。

我的主要建議是開始實驗。 用C或C ++編寫最簡單的程序(傳統上會顯示“ Hello there,world!”的字樣),並弄清楚如何從命令行進行編譯和運行。 然后,一旦有了編譯版本,就可以在調試器下啟動它,並處理斷點,打印表達式等。一旦啟動並運行了最簡單的程序,您就可以了解調試器的含義。告訴您,添加類,函數,結構或其他任何感覺都很好的小步驟,然后再次執行該循環。 與以大型程序開始相比,這種方式的執行速度要快得多。

仍然處於很高的水平,這里有一些主題您至少需要弄清楚一些。 請注意,“從頭開始學習”方法適用於以下任何主題。

  • 運行g++ :它具有相當不錯的命令行語法在線文檔,盡管您一開始會發現它令人生畏,但請嘗試尋找最簡單的起點。
  • 查找要使用的文本編輯器。 Vimemacs是傳統的(而且功能非常強大),但是兩者的學習曲線相對較陡。 如果您周圍有人來幫助您,那就更好了。 還有其他選擇,但是作為我自己的emacs用戶,恐怕我對它們並不熟悉。
  • 熟悉gdb 它是了解程序的強大工具。 同樣,它具有廣泛的在線文檔,需要您認真閱讀。
  • 熟悉一些標准的unix命令將很有用: lscd和導航unix目錄的移動基礎知識; grep用於快速搜索源文件。
  • ide方法相比,您必須習慣於命令行 方法 前者是傳統的unix開發人員模型,在該模型中,您可以從其他工具集合中收集所需的操作,而不是讓ide向您隱藏大部分知識。

如果您的項目是多文件的,特別是如果它是一個完整學期的項目,則您還可以考慮學習以下主題。

  • Make是用於描述如何編譯和鏈接多文件項目的工具,這樣您就不必每次都手動記住如何做。 不幸的是, Make因其使用技巧而享有當之無愧的聲譽,但這在跨多個目錄的大型項目中尤其如此,並且在線上可能有很多簡單的示例。
  • 我會強烈考慮使用githg之類的源代碼控制系統,即使對於一些相對較小的項目也是如此。 擁有已完成工作的存檔版本非常安全,以便您可以快速備份。 githg對於一個小的一次性項目來說都是多余的,但是值得自己學習。 我今天所了解的傳統觀點是,它們在哲學和核心功能上非常相似,但是hg在命令行級別上肯定更加一致,因此更容易入手。

我懷疑這相當令人生畏,尤其是如果您之前實際上沒有接觸過UNIX命令環境。 我在上面再次強調了我的第一條建議:從簡單開始並嘗試進行學習。 這樣可以最大程度地減少在任何給定時間點必須纏頭的新內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM