2011-11-23 53 views
1

我需要編寫一些C函數,這些函數將作爲Web應用程序的一部分在CenOS Linux服務器上運行的Java程序調用。服務器是一個託管的專用服務器,坐在另一個物理位置,遠離我。選擇c編譯器並創建開發環境

我是否需要直接在服務器上開發C東西,也就是開發隧道進入服務器?或者我可以在辦公室的Mac或Windows PC上開發C程序,然後一旦一切正常,將最終結果存儲在服務器上以供使用?如果是後者,是否以任何方式限制發展環境的選擇?也就是說,我應該使用哪種編譯器,還是我需要擔心的IDE或編譯器中的任何設置,因爲開發環境將與生產環境不同?

如果我在Mac上使用Xcode版本3,默認使用GCC,而Xcode版本4使用LLVM-GCC編譯。編譯器的選擇是否假設我使用C99標準的東西?我不希望代碼依賴於開發環境,因爲我不能保證代碼將來保持不變。我可以在Xcode中手動切換編譯器來驗證代碼在GCC和LLVM中的工作嗎?

回答

2

忽略窗口,事物在Mac/Linux中非常便攜。如果你在Mac上開發任何你想要的開發環境(我個人使用命令行TextWrangler和GCC

一旦你開發你的軟件,它是一個簡單的事情,將文件複製到遠程服務器並在那裏編譯它我碰到的唯一可移植性問題是使用PF_而不是AF_的mac()的socket(),Mac仍然接受AF_但它不會在其中公佈它它是手冊頁,其他系統不一定會接受PF_)和sranddev()在某些系統上不可用;兩者都很容易解析。

但是,如果y你想直接在遠程機器上編寫軟件,這絕對不是一件難事,我只需在那裏選擇文本編輯器(通常是vi或emacs)和編譯器(通常是gcc)即可。

一般來說,對於那些只是傳統unix命令行的程序,我傾向於儘可能避免Xcode,因爲它喜歡隱藏東西,而IMO真正理解幕後發生的事情是一件好事。 (特別是如果您使用其他* nix系統。)

+0

我的代碼嘎吱嘎吱數學,所以它只是很多檢查程序中的各個點,以確保數字被正確計算。這預示着使用文本編輯器和gcc通過ssh到服務器的好處。但是,與GDB相比,Xcode或Eclipse(或其他IDE)中的調試(通過代碼步進)有沒有更好的支持?我想我不知道我會錯過什麼,如果我想要使用文本編輯器/ gcc/ssh方法,可能會提高我的工作效率。 – ggkmath

+0

@ggkmath:如果你對GCC/GDB感到滿意,並且你的SSH連接很好,那麼你可能不會錯過任何東西。 –

0

無論你做什麼,它都需要在服務器上重新編譯。

您可以在兩種環境下創建可運行/可測試的代碼,儘管您可能需要在兼容性問題上使用#ifdef。如果有的話,多少取決於你實際寫的東西。

0

編譯器的選擇假設我使用C99標準的東西嗎?

是:Microsoft,AFAIK,仍然不完全支持C99(但可能在最新的MSVC中已更改)。此外,您必須抵制僅僅因爲它們在那裏而使用非標準功能的誘惑。 OTOH,本地構建環境可能會迫使你編寫便攜式程序。

選擇取決於您的程序如何與較大的系統進行通信,但至少在本地開發零件可能是最方便的選擇。

+1

不,你說的對,C99不支持MSVC編譯器 – Friedrich