我编写了一个代码,基本上是为了使用VC ++和开发环境MS Visual Studio 2010的Windows。
注意:它是控制台应用程序,不包含GUI 。所以我想交叉编译。
我希望我的代码能够在不修改代码的情况下编译到Linux。我的意思是,我希望做交叉编译。任何人都可以简单地向我描述“如何做”或者将我重新引导到StackOverflow上的几篇帖子。
答案 0 :(得分:0)
请确保使用ANSI版本的c ++(没有clr人员等),并且它也应该在linux上编译。
您可能希望找到一个将csproj转换为makefile的工具,或者自己编写它们。
答案 1 :(得分:0)
虽然你可以确定挖出一个linux目标版本的GCC交叉编译以在windows下运行(或者使用针对windows平台的GCC版本来源构建它,例如MINGW或cygwin)它可能证明在虚拟机中安装较小的Linux发行版(可能只有一个控制台版)更容易。
正如您所提到的,您已使用WIN32 API完成了I / O.您需要将其更改为unix / posix类型的方法,可能包括学习更改终端设置,这可能是一种学习体验。要知道你做对了,你需要能够测试它。在cygwin下构建代码的“linux”版本并在windows框上运行可能会有效,但最好是熟悉实际的目标操作系统。
只是验证你的Windows可执行文件在Wine下运行,Dani提到这也不是一个坏主意。还有一个库Winelib,旨在通过在尝试编译linux代码时为windows调用提供替代来帮助移植。
最后,只要将编译器从MSVC切换到GCC,无论你是针对linux还是windows或cygwin,都可能需要对源代码进行一些更改。 MSVC将容忍GCC不会做的许多狡猾的事情,例如你如何宣布结构。相反的情况可能也是如此。但是通过一些学习并定期将项目提供给两个编译器,您可以维护可移植的代码。