工作中,在linux平台怎麼開發軟體?
RT,我是一名剛入門學習c語言的新人,網易雲課堂裡面老師是選擇的dev-c++作為學習工具使用的。自己也特意查了一下,linux下面的gcc+gdb的使用,感覺很麻煩啊。因為全都是在終端完成的,界面首先就很亂,gcc好像不會顯示全部的編譯信息,比如一些warning(好像可以加選項解決)。特別是在調試的時候dev-c++很容易選擇斷點,不用記行數,可以同時很方便地查看代碼可以查看CPU窗口,這些要是在終端裡面顯示的話(我也不知道能不能把win下面ide的功能全部實現),界面的可觀性就會變得很差,在調試大型程序的時候會很麻煩吧(只是我的猜想)。
我並沒有想激起win和linux的黨爭,我是實用黨,感覺linux這方面不夠好,但是很可能是我自己見識淺薄所致,所以來問一問。win下的ide還行,但是有很多功能用不上會顯得臃腫,影響速度。王垠當年提倡「完全用 linux 工作」,然而最近又發文挺 windows 噴 unix,這中間究竟經歷了什麼? - Linux看過上面的鏈接後依然沒能解決我的問題。我想知道,各位程序員在linux平台的開發工作是怎麼進行的呢(這是關鍵)?會用圖形界面嗎?還是和win一樣繼續用ide嗎?而不是使用vim(...)+gcc+gdb嗎?感覺gdb調試起來特別麻煩,很不直觀,不便捷。另外像一些手游,像微信這種app可以純在linux下完成開發嗎?還是寫完後拿到win下面調試之類的呢(雖然不知道可行否)?作為新手,提問可能會很傻瓜,請見諒
我用 vim寫 C++ 的時候大概長這樣:用了些啥插件我也懶得數了=,=隨手刪掉一個引號保存之後就這樣了:
我用linux的時候,也是vim + gcc + gdb,而且C++模板寫多了之後error多到看不清,每次都是
make 2&>1 | tee fuck
vim fuck
來看的。
vim發展了這麼多年都沒有什麼靠譜的gdb integration,所以你用一點奇技淫巧在界面上整幾個tab,然後噁心噁心,就感覺沒那麼噁心了。當然每次切回Visual Studio的時候都覺得,卧槽爽爆了,從來沒覺得VS這麼好用過。
======================================
說到這裡有一個小插曲。clang是在太容易崩潰了,當然正確的代碼是很難導致clang崩潰的,一般都是錯誤的代碼讓clang崩潰。但是最可惡的是,clang在崩潰之前竟然不告訴我代碼錯在哪。於是我有一次一怒之下,debug了clang,靠我豐富的編譯器經驗,硬是靠call stack上那顆語法樹的結構,挖出來了錯誤的文件和行號……我用Debian的linux系統開發Java項目,好用的不得了。IDE方面,eclipse,py-dev等都有相應的Linux版本,不過我更喜歡vim;
使用git做版本控制簡直與Linux無縫結合;
終端啟動服務,查看日誌爽到爆;關鍵是沒有殺毒軟體啊,殺毒軟體就是常駐系統的大病毒啊。。。linux上的開發工具很多時候會強迫你去了解一些原理上的東西。當然這個過程比較痛苦。
vs賣那麼貴,果斷很多地方都很智能哇。生產力大幅提高哇。但是這些智能會把一些處理細節屏蔽掉了,以至於可能很爽地用了n年到最後還是不知道為什麼。so,我現在都windows上用clion或者vs寫好代碼。然後扔linux上去編譯運行。如果想windows上調試就寫好適配唄我那會兒用emacs啊,另外Eclipse和Netbean都有C/CPP支持,不過jet brains 最近那個工具你也可以考慮一下 JetBrains CLion 。這些都是不太需要自行配置的,相對比較友好。
題主講自己是新手,有這些疑問很正常。我來講講我自己的看法,我也才編程(c++)入門兩年,linux使用一年。
首先,說明一下我沒有調試的習慣,目前寫的代碼都沒大到非要用調試器,所以不熟悉win下ide的斷點調試,也不熟悉linux下gdb的使用。因為學校課程要求用gdb干過幾周反彙編,用到一些調試功能,感覺和vs裡面我用過的功能一樣。當然有滑鼠操作和鍵盤操作的區別,需要自己記命令。所以關於調試不作評論。正文的首先,linux命令行非常強大,但並不是只有命令行。gcc的warning非常詳細,一點不比vs差。而且事實上vs上的warning我從來不願看,只看error(聽說是程序員通病哈哈哈),反而是用gcc編譯時一堆warning逼強迫症的我一個個檢查。
關於命令行是否直觀的問題,vim/emacs作為神之編輯器/編輯器之神的強大可以看看youtube上的視頻,當然還是自己折騰才深感強大的可怕,@開源哥 給出的vim截圖只是千百種配置方法中的一種,完全可以配置出最適合自己的環境來寫代碼,調代碼。而且命令行不直觀是因為用慣了windows,看習慣之後會覺得命令行看起來才爽,ide才不知道東西在哪,自己配置的環境自己最熟悉。 dev也是包裝了gcc,所以你想在linux下配置一個dev出來是毫無問題的,但沒什麼人這麼做,因為不需要。 手游微信這些如果是安卓應用只和java有關,linux配置java環境比windows簡單多了……至於蘋果,還是用mac好。在vs上開發即可盡量寫posix函數不能就自己寫個中間層,用ifdef判斷os,linux獨有函數就fake一個空函數這樣就能在vs上編譯linux程序了當然運行還是要在linux
emacs+gcc+gdb,調試什麼的沒有壓力,覺得也並沒有和IDE差太多。
到目前為止除了java我沒有非要用IDE寫的代碼(scheme, c, c++, java, common lisp, haskell, python都寫過,現在主要用c++),其實有沒有IDE都不是關鍵,有思路的時候gedit也寫的飛起,沒思路的時候用什麼都像便秘一樣。
作為一個C++工作者,個人編輯編譯調試環境及每天工作流程如下:1. linux編譯伺服器一台,提供gcc等編譯工具2. linux單元測試環境數個3. windows laptop一台,上面裝有sourceinsight, eclipse, beyoundcompare, ultraedit, ftp, xterm以及cvs,jira這樣的代碼控制工具等4. 使用代碼控制工具download代碼,使用sourceinsight/eclipse/utraedit去查看編輯源代碼和makfile,然後通過ftp上傳到linux編譯伺服器編譯鏈接,再將二進位代碼放到測試環境中進行測試,必要時使用gdb調試,或者簡單粗暴的到處打log來發現問題。5. 測試過程中需要簡單進行代碼修改或者撰寫某些簡短腳本時,使用linux自帶的vi工具進行行編輯。如果需要複雜修改,則將代碼download下來在windows客戶端上重複第4-5步直到代碼完全ok6.將完全測試過的代碼通過代碼控制工具提交到代碼庫。當然中間可能還需要經過一些PR修復報告或者開發代碼提交申請,單元測試用例撰寫等流程。然後宣布本次開發結束,開始下一輪開發。
qt creator clion
兩種方案。一個在win下寫,盡量用posix標準,然後samba掛著虛擬機里。二是直接上終端vim/emacs+gcc/clang+gdb。
Linux下面,如果有桌面環境,你也可以用codeblocks、eclipse、Qt Creator等。個人比較推薦Qt Creator,可以直接用cmake的腳本當工程文件,而且在智能提示、自動補全、跳轉、重構等方面也做的不錯(當然跟VS比還是有點差距)。
eclipse 可滿足需求。功能強大,不需要繁瑣的配置。
qt,codeblocks,eclipse
首先vim的強大是毫無爭議的,但其配置也是比較麻煩的,配置的好,幾乎可以完爆IDE,不想配置的話,用sublime也可以
從廣大農村出來的,開始學開發之前,沒打過幾個字,和大多數人正好是反過來的,吃奶是從Arch Linux 吃起的,平時自己也不玩遊戲,基本沒有對Windows的需求,Linux開發各種好用,但是總有很多莫名其妙的問題,後來我還是受不了買了Mac,終於解脫了。
建議初學不要用ide,像大家推薦的用vim+gcc+gdb足夠了,順便學習make用法,推薦一個內存工具包valgrind。前段時間我也在學c,這樣配下來還是蠻上手的
有人用sublime text來開發C艹的么(
c/c++用slick edit。
clion qtcreator
vim
樓上回答了Vim/Emacs+GCC+GDB。編輯器+編譯器+調試器,這是Linux下主流的方式。
其實關於LZ這個問題,可以通過在Linux下使用IDE來解決。
Linux有許多跨平台IDE,比如Code::Blocks,QtCreator。在Windows習慣DevCpp的話,Code::Blocks也應該能夠習慣。還有跨平台的比如NetBrains,Eclipse,JetBrains CLion等,都是支持C/C++的。習慣Windows的,我想對這些軟體應用起來應該不是特別困難。Linux還有一些獨有的,比如Anjuta,KDevelop。如果喜歡嘗試的話,也是很給力的。關於Linux系統的選擇,推薦圖形化的Fedora或者Ubuntu。這個主要就靠個人喜好了。Vim+GCC+GDB
Vim修改修改配置,跟vs沒差的推薦閱讀:
※程序員需要達到什麼水平才能順利拿到20k無壓力?
※程序員技術大牛升職後不編程是否是有一種浪費?
※有哪些系統學習編程的書籍?
※演算法工程師和軟體工程師的區別在哪裡,他們工作是如何合作的?
※程序員找不到老婆嗎?
TAG:軟體開發 | MicrosoftWindows | Linux | 軟體調試 |