C++ C++;在windows上运行并生成Linux代码的编译器

C++ C++;在windows上运行并生成Linux代码的编译器,c++,windows,linux,compiler-construction,C++,Windows,Linux,Compiler Construction,我只是好奇这是否可行: 是否有在Windows上运行并能生成Linux代码的C++编译器?< p>交叉编译器可以做到。 请参阅。还有类似这样的库:它们提供了平台之间的可移植性。对于其他的,我建议寻找抽象库,这绝对是可能的。您需要一个能够处理交叉编译并指定目标的编译器。关键是要得到一个能够以目标系统所需的方式创建二进制文件的编译器。g++会为您做到这一点 我曾参与过一个项目,我们使用linux使用其C编译器创建嵌入式arm可执行文件,然后使用scp将其复制过来进行测试。如果您有足够的CPU,您应该

我只是好奇这是否可行: 是否有在Windows上运行并能生成Linux代码的C++编译器?

< p>交叉编译器可以做到。
请参阅。

还有类似这样的库:它们提供了平台之间的可移植性。对于其他的,我建议寻找抽象库,这绝对是可能的。您需要一个能够处理交叉编译并指定目标的编译器。关键是要得到一个能够以目标系统所需的方式创建二进制文件的编译器。g++会为您做到这一点


我曾参与过一个项目,我们使用linux使用其C编译器创建嵌入式arm可执行文件,然后使用scp将其复制过来进行测试。

如果您有足够的CPU,您应该购买并安装或任何其他发行版,虽然听起来可能很复杂,但测试二进制文件并调试它们会更容易。

是的,这是可能的,但为什么要麻烦呢?有一种风险是,您将设置不正确,并获得无法正常工作的二进制文件

另外,您还需要安装vmware**以便测试生成的二进制文件—您将运行全面的测试,不是吗

只需设置另一个VM进行构建(当然,您需要测试它是否可以在未安装构建工具的机器上工作)


**其他虚拟化平台也可用,这不是商业化的。

g++
安装在中可能可以做到,但我不确定。交叉编译是可能的,是的。另一个问题是windows上是否有易于安装/配置的交叉编译器。你为什么需要这个?考虑到(1)Linux上通常的程序是从源编译到分布式二进制文件(除非是由包管理器跟踪的点),并且(2)如果你真的需要这样做,你可以总是用一些Linux来建立一个虚拟机并编译到那里。Linux有点太泛泛了。您需要指定硬件和(特定)操作系统(及其版本)以获得正确的X编译器。这不是小事,但可行。这些都有点过时,但这是正确的想法:只需在CBUILD=w32(或cygwin)和CTARGET=linux之间设置一个交叉编译器。如果您有只在一个平台上运行的开发工具,但您想为另一个平台生成二进制文件,那么这绝对值得费心。我参与的一个项目中,开发套件只在Windows上运行,但我们的目标是一组其他操作系统,包括Linux。交叉编译大大减少了测试更改所需的时间。使用VM是迄今为止最简单、最健壮的解决方案,并允许在多个Linux发行版上进行测试。值得注意的是,由于VM可以通过虚拟网络连接与主机共享文件,因此可以使用Windows和Linux工具的组合进行开发和源代码management@Clifford-不一定。如果他们在基于windows的不可移植的全面构建系统上投入了大量资金,那么从源代码的工作副本构建linux版本,然后将二进制文件推送到测试盒或vm上可能更可取。尤其是网络共享源文件夹的增量构建如果不同机器的时钟没有与同一网络时间源紧密同步,很容易出现问题。@克里斯:我不是说它一定是一个无缝的工作流,只是如果你想在Visual Studio中编写代码,但是在Linux上编译它,例如,这是可能的。关于时钟偏移,主机和虚拟机至少会共享相同的硬件时钟,但也可以通过使用版本控制系统作为中间系统而不是直接使用共享文件来避免该问题。签入和签出代码对于第二个系统来说仍然是一大开销。在许多情况下,当一个人不处理特定于机器的代码部分时,如果它在windows上工作,那么它可能会在linux上工作-在对程序的通用部分进行一些更改后,立即有趣的问题可能是第二个编译器是否接受它,而不是结果是否运行是的,使用windows主机为嵌入式linux系统开发可能是最常见的情况。