標籤:

Linux 下的 C++ 開發和 Windows 環境下的開發有什麼區別?

現在在學 C++,經常看到說是 Linux 下的 C++ 開發的人員需求量巨大。那Linux 下的 C++ 開發和 Windows 環境下的開發有什麼區別?


受邀答題。就開發本身而言,其實沒太大區別,無非就是開發玩具型的小項目的時候,Windows 下有更好用的集成開發環境,可以讓開發更簡單一些。但項目大到一定程度之後就沒有顯著區別了。不同平台下的 C++ 都是 C++,語言本身是一樣的,只是調用的 API 不同而已,但即使在同一平台下,開發不同類型的應用的時候開發者能接觸到的 API 集合同樣也是不一樣,因此刻意強調不同平台下 API 的差異其實並沒有意義。

「Linux 下 C++ 開發人員需求量巨大」這個題設是正確的,主要原因是最近幾年網路服務和雲計算的飛速發展,導致了 Linux 下 C++ 開發的需求量爆增。當然,在這些類型的項目實際開發過程中,需要直接接觸系統底層 API 的機會並不多,除了少數核心開發人員外,大部分開發者其實並不需要特別的「Linux 下的 C++ 開發經驗」,只要 C++ 編程功底足夠好就可以了。

之所以很多地方招聘的時候刻意要求要有 Linux 下的 C++ 開發經驗,原因是只在 Windows 下寫過 C++ 的人裡面有相當大比例連基本概念都沒有搞清楚的人,相對來說在 Linux 下做過 C++ 開發的編程功底較好的比例會相對高一些。


語法之類基礎知識都一樣,工具風格區別比較大需要熟悉,但是開發方向差別非常大。

我見過的c++/windows招聘職位絕大部分都是客戶端應用類開發,而c++/linux是以互聯網行業後端服務為主,關注點、背景知識都完全不同,兩者互換的話都要從頭積累。


1、開發環境

2、系統 API

3、第三方庫

一年前,13年我做Windows底層開發,常用的技術與工具庫:C/C++,STL/POCO/BOOST, Python, lua, gTest, VS, Notepad++ ...

目前做遊戲開發,常用的技術與工具庫:C/C++, STL/BOOST, Python/Shell/Awk, Django, Emacs, MySQL, 很多第三方庫(Json,xml, ...).

除了語言標準沒差,其他差距還真的挺大的,不過有基礎的話,一個月也就可以上手做事情了,其他的慢慢學。


兩種操作系統的內核不同,內存分配機制不同;

不過如果你不是做系統軟體的開發,而是 MIS 、ERP 之類的主要與資料庫及業務相關的軟體,則與操作系統的關係並不大。


WIndows下用Visual Studio C++ , Linux下沒有這個東西,有類似的IDE但是用的不多,你必須用vim編寫程序,用g++去編譯生成二進位程序後運行,這是開發工具的不同。

C++號稱是跨平台的,但是Visual C++的編譯器和g++差別還是很大的,有可能在前者能編譯通過而在後者卻報錯,反過來也有可能,同樣的錯誤,報錯信息卻不一樣。


推薦閱讀:

Linux系統各種目錄的作用
生信自學之linux操作基礎
為什麼拷貝到U盤速度越來越慢?
Linux系統安全

TAG:Linux | C入門 |