2011-11-23 31 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