Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C和x2B中程序之间的差异+;在Windows和Linux下开发 在Windows和Linux下开发的C++程序有什么不同? 为什么在Windows下C++开发的程序不能在Linux下使用? 本机程序不兼容,因为Windows有一套与Linux完全不同的API集。正如其他人提到的,每个平台也使用不同的可执行格式。此外,这两个平台都有自己的一套库,程序将与之链接和/或共享。例如,Windows程序通常在Visual Studio中使用特定于Windows的库(如MFC、Win32API等)开发。这些库在linux中不可用,因此程序甚至不会编译,除非小心确保使用跨平台库(如QT)_C++_Windows_Linux - Fatal编程技术网

C和x2B中程序之间的差异+;在Windows和Linux下开发 在Windows和Linux下开发的C++程序有什么不同? 为什么在Windows下C++开发的程序不能在Linux下使用? 本机程序不兼容,因为Windows有一套与Linux完全不同的API集。正如其他人提到的,每个平台也使用不同的可执行格式。此外,这两个平台都有自己的一套库,程序将与之链接和/或共享。例如,Windows程序通常在Visual Studio中使用特定于Windows的库(如MFC、Win32API等)开发。这些库在linux中不可用,因此程序甚至不会编译,除非小心确保使用跨平台库(如QT)

C和x2B中程序之间的差异+;在Windows和Linux下开发 在Windows和Linux下开发的C++程序有什么不同? 为什么在Windows下C++开发的程序不能在Linux下使用? 本机程序不兼容,因为Windows有一套与Linux完全不同的API集。正如其他人提到的,每个平台也使用不同的可执行格式。此外,这两个平台都有自己的一套库,程序将与之链接和/或共享。例如,Windows程序通常在Visual Studio中使用特定于Windows的库(如MFC、Win32API等)开发。这些库在linux中不可用,因此程序甚至不会编译,除非小心确保使用跨平台库(如QT),c++,windows,linux,C++,Windows,Linux,但是,如果小心,可以在代码中使用跨平台库,并且可以在两个平台下编译相同的程序。对于这样的程序,您需要仔细地将任何特定于平台的详细信息(文件系统位置等)放入它们自己的文件中。然后,您需要设置适当的#define语句和/或makefile指令,以确保每个平台的构建中都包含适当的文件 当然,如果您使用“跨平台”语言,如Java或Python,并且在实现中不使用任何特定于平台的代码,那么您的程序可以在这两种环境下运行 注意:尽管可执行文件的格式不同,但在Windows上开发的一些程序可以在Linux下使

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

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


注意:尽管可执行文件的格式不同,但在Windows上开发的一些程序可以在Linux下使用名为C++的仿真器执行。

C++本身是可移植的。但是有些C++库不是。如果C++程序使用一些不可移植的库,则该程序是不可移植的。
例如,C++程序使用GUI的东西来绘制,因为MFC仅支持在Windows中,所以这个C++程序不能直接编译或运行在Linux上。p> 每个操作系统定义一个API。如果您编写代码来调用,那么它在Linux上就不存在了。如果你编写API代码,它不会在Windows中直接跳出来攻击你

要了解更多信息,请下载一个重要的开源程序(例如,或),并查看其“配置”脚本如何安排在任意位置进行编译。

  • Windows和Linux使用不同的容器格式来保存可执行代码(vs)
  • Windows和Linux有完全不同的API(除了只使用CRT和
  • Windows和Linux具有完全不同的目录结构
您可以编写一个程序,该程序可以使用任意一组API(例如,使用),并且可以处理任意一个目录结构,但是由于容器格式不同,您仍然无法在两个操作系统上运行相同的文件

这可以通过使用来解决。

简而言之

  • Windows运行
  • Linux运行
此外,即使有在PE和ELF之间转换的工具,与操作系统接口所需的程序指令在Windows和Linux之间也是完全不同的。只有最受限制的纯计算代码(只进行计算,根本不与操作系统交互)可以在系统之间移植,而无需特殊操作。然而,这很少做到


我相信Linux的某些版本允许您直接加载为Windows设计的设备驱动程序,而无需重新编译。但是,这是一种非常特殊的用途,并且该技术并不普遍使用。

有两个主要原因

从理论上讲,一些语言(如C)的相同程序(源代码)可以在Windows和Linux上运行。但汇编只是有所不同;这意味着您必须为每个平台编译相同的源代码文件

但实际上,每个操作系统都有一组不同的API。和不同的技术,以更快地完成工作。。。这通常会吸引开发人员使用它们。而且它们不遵守标准,因此失去了可移植性


这是本机程序。。。不管怎么说,有很多种语言。。。它们确实是跨平台的,但为了便于携带,您必须牺牲速度。

这是一个大话题

  • 首先,Windows和Linux不是二进制可比的。这意味着即使是最简单的程序也无法从一台机器识别到另一台机器。这就是解释语言喜欢并且变得如此流行的原因,但即使这些语言在每个平台上也不支持相同的功能集

  • 库依赖性/OS支持:任何非常复杂的程序都需要以某种方式访问系统,而一个系统上可用的许多功能在另一个系统上是不可用的。有一百万个例子;只要看看Linux等价物blank或Windows等价物blank。超越操作系统支持,应用程序大多构建在函数库之上,其中一些函数库在两个系统上都不可用


  • 不要过于迂腐,但开发一个程序与构建和执行它是不同的。在许多情况下,在一个操作系统上编写的程序可以构建并编译为在另一个操作系统上执行。正如其他人指出的那样,其他程序依赖于仅由特定操作系统或仅驻留在该操作系统上的库提供的某些功能。因此,必须在OS.< /P> < P>上编译并运行。当C++程序在平台上编译时,它最终变成机器能够理解的形式(即机器代码)。在后台,程序使用系统调用执行特权操作。这些系统调用是通过方法或API实现的。这些方法因平台而异。因此,在每个平台上,编译的代码都是不同的。如果您想编译,可以使用许多交叉编译器