我需要编写一些C函数,这些函数将由运行在CenOS Linux服务器上的java程序调用,作为Web应用程序的一部分。服务器是托管专用服务器,位于远离我的另一个物理位置。
我是否需要直接在服务器上开发C端口,即开发隧道到服务器?或者我可以在办公室的Mac或Windows PC上开发C程序,然后一切正常后,将最终结果存储在服务器上以供使用?如果是后者,它是否以任何方式限制了对开发环境的选择?也就是说,我应该使用哪个编译器,或者我需要担心IDE或编译器中的任何设置,因为开发环境将与生产环境不同?
如果我在Mac上使用Xcode版本3,默认情况下使用GCC,而Xcode版本4使用LLVM-GCC进行编译。假设我使用C99标准的东西,编译器的选择是否重要?我不希望代码依赖于开发环境,因为我不能保证它将来会保持不变。我能否以某种方式在Xcode中手动切换编译器以验证代码在GCC和LLVM中是否有效?
答案 0 :(得分:2)
忽略窗口,事物在mac / linux上非常便携。如果你在任何开发环境中在mac上开发它(我个人在命令行中使用TextWrangler和GCC。
开发软件后,将文件复制到远程服务器并在那里进行编译就很简单了。
您可能需要也可能不需要更改一些内容。我遇到的唯一可移植性问题是使用PF_而不是AF_的mac的socket()(Mac仍会接受AF_,但它不会在它的联机帮助页中宣传它,而其他系统不一定会接受PF_)和sranddev()没有某些系统可用;两者都很容易解决。
但是,如果你想直接在遥控盒上编写软件,那绝对不是一件难事,我只想在那里选择文本编辑器(通常是vi或emacs)和编译器(通常GCC)。
一般来说,对于那些只是传统的unix命令行的程序,我倾向于尽可能地避免Xcode,因为它喜欢隐藏东西,而IMO实际上是理解幕后发生的事情是一件好事。 (特别是如果你使用其他* nix系统。)
答案 1 :(得分:0)
无论你做什么,都需要在服务器上重新编译。
您可以创建在两种环境下都可运行/可测试的代码,尽管您可能必须#ifdef
解决兼容性问题。如果有的话,多少取决于你实际写的东西。
答案 2 :(得分:0)
编译器的选择是否与我使用C99标准事物有关?
是的:Microsoft,AFAIK仍然不完全支持C99(但可能在最新的MSVC中有所改变)。此外,你必须抵制使用非标准功能的诱惑,因为它们就在那里。 OTOH,本地构建环境可能会迫使您编写可移植程序。
选择取决于您的程序如何与更大的系统进行通信,但在本地开发至少部分可能是最方便的选择。