我想使用
Visual Studio 2010
创建一个最终将在 Linux 上运行的 C++ application
有什么我应该注意的兼容性/版本问题吗? 我应该在
Windows
和 Linux
上使用哪个编译器?
只要您使用标准 C++ 并且没有特定于平台的扩展,编译器就不重要。如果您需要系统特定的设施(网络、文件系统...),请尝试使用抽象层,例如boost。
不幸的是,有很多问题需要您注意。正如其他人指出的那样,最重要的是您仅使用标准 C++ 以及可移植到您目标的所有平台的任何库。但还有很多其他事情也会困扰你,例如不同的行结尾(Windows 使用 , Unix变体通常使用 )、不同的数据类型大小等。更一般地,当您尝试保持可移植性时,您还需要了解字节顺序、字节顺序、不同文件系统的工作方式等。
本质上,最重要的是熟悉您所针对的所有系统。 不要在一个系统上编写它,然后期望能够在另一个系统上轻松编译它。相反,从第一天起就在所有相关系统上编译它,并确保它始终在所有系统上继续运行。我建议研究像 CMake (http://www.cmake.org) 这样的跨平台构建系统——根据我的经验,它会为你省去很多痛苦。如果可以的话,您不想一直保持多个平台的 makefile 同步。
使用标准C++。尽量不要使用依赖于编译器的功能,例如
__int64
或特定于平台的外部库,应该没问题。