有没有适用于Windows到Linux的用户友好型跨编译工具?
有没有适用于Windows到Linux的用户友好型跨编译工具?
crosstool-ng支持使用cygwin主机构建交叉编译器。
概述:
crosstool-ng
tar xvjf crosstool-ng*
)./configure
flex
,libtool
,ncurses-devel
)。您至少需要以下内容:
make
make install
/usr/src/cross-linux-gnu-root
mount c:/cygwin/usr/src/cross-linux-gnu-root /usr/src/cross-linux-gnu -o binary,posix=1
)ct-ng menuconfig
x86
(大概是),子架构设置为i686
(避免GCC 4.8问题,感谢osm0sis),目标内核设置为linux
,目标C库设置为glibc
,并启用C++编译器。Paths and misc options
中启用实验性选项,然后进入顶级Companion tools
,启用Build some companion tools
,然后使用make 3.81
(感谢osm0sis)ct-ng build
当然,这并不能让您在Visual Studio内构建Linux应用程序。(VS2010及更高版本允许您使用其他工具链(如gcc)进行构建,但您需要一个适当的工具链描述以及由crosstool-ng构建的交叉编译器)。但是您将拥有一个可工作的g++-linux-gnu
,您可以直接运行它或使用Makefile运行。
注意:构建交叉编译器需要很长时间。osm0sis提供了此处的预构建gcc 4.8.1,以及他关于构建交叉编译器的笔记(用于更新此答案)。
在Windows上通过CoLinux本地编译生成Linux可执行文件,无需使用虚拟化或交叉编译器,也无需离开(重新启动)Windows。通过Cooperative Linux,在Windows下进行C/C++编译以供Linux使用。Alt+Tab可以实现最快速的切换操作系统(无需重启或重新启动):
archive.ubuntu.com
更改为old-releases.ubuntu.com
:$ sudo vi /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install libmysqlclient15-dev
$ mount cofs0 /mnt/ -t cofs
$ cd /mnt
$ c++ your.source.cc -o executable.name
你最好使用跨平台的IDE,比如Code::Blocks,它可以导入MSVC项目,并为Linux生成Makefile,然后你可以在Linux上运行(甚至是同一个程序,如果你愿意的话)。
因此,你的工作流程应该类似于以下内容:
Code, Compile, and debug on MSVC -> import into Code::Blocks & generate Makefile
-> test compile and debug with GCC
-> copy to Linux with Code::Blocks -> test compile & debug on Linux
这可能有点难懂,但至少Code::Blocks可以通过生成Makefiles等方式处理许多这些小细节。
你是在寻找一种可以将编写的Windows代码转换为Linux代码并运行的工具吗?实际上并没有这样的编译器,但也许你正在寻找Wine(http://www.winehq.org/),它可以让你在Linux上运行Windows应用程序(如果它们使用了Wine已经处理过的API)。
编辑:我假设你的代码在使用Windows API(Win32等)。如果你只是使用标准C++和跨平台可用的库,那么还有很多其他答案。
我不相信有任何编译器可以让你在Windows上进行编译,然后将生成的二进制文件运行在Linux机器上。你最好是设置两个开发环境,一个在Windows上,一个在Linux上。如果适合您,可以在Windows环境中进行大部分开发和调试,然后经常在Linux下进行编译和测试,以确保您的代码真正具有跨平台性。您还需要使用跨平台的构建系统和测试框架。我建议分别使用 cmake和 Google Test。