在Windows和Linux下开发的C++程序之间的区别

sky*_*oor 12 c++ linux windows

在Windows和Linux下用C++开发的程序有什么区别?

为什么不能在Linux下使用在C++下用Windows开发的程序?

Jus*_*ier 8

原生程序不兼容,因为Windows拥有与Linux完全不同的API集合.正如其他人所提到的,每个平台也使用不同的可执行格式.此外,两个平台都有自己的一组库,程序将链接和/或共享.例如,一个Windows程序通常会在使用Windows的特定的库如Visual Studio开发MFC,Win32API等,这些库不是在Linux中提供,所以程序甚至不会编译除非小心,以确保跨平台使用库(例如QT).

但是,如果您小心,可以在代码中使用跨平台库,并且可以在两个平台下编译相同的程序.对于这样的程序,您需要仔细地将任何特定于平台的详细信息(文件系统位置等)放在他们自己的文件中.然后,您需要设置正确的#define语句和/或makefile指令,以确保每个平台的构建中都包含正确的文件.

当然,如果您使用"跨平台"语言(如Java或Python),并且在实现中不使用任何特定于平台的代码,那么您的程序可以在两种环境下运行.

注意虽然可执行格式不同,但在Windows上开发的某些程序可以使用名为WINE的模拟器在Linux下执行.


SLa*_*aks 7

  • Windows和Linux使用不同的容器格式来保存可执行代码(PE vs ELF).
  • Windows和Linux有完全不同的API(除了仅使用CRT和STL的简单程序)
  • Windows和Linux具有完全不同的目录结构

您可以编写一个程序,可以使用任何一组API(例如,使用Qt),并且可以处理任一目录结构,但由于容器不同,您仍然无法在两个操作系统上运行相同的文件格式.

这可以通过使用Wine来解决.