
理论上说Linux系统编译的文件是不能在Windows系统上执行的,因为Windows系统没有Linux程序执行所依赖的so和a文件,so和a文件是Linux系统上的共享库文件,Windows系统上也没有Linux程序需要的系统调用(系统调用相当于Windows系统的API的概念),不同 *** 作系统的二进制文件是不能通用的。
但是现在情况有些不一样了,新版的Windows10提供了WSL(是Windows Subsystem for Linux的缩写),可以在Windows 10系统中运行Ubuntu、Fedora、SUSE Linux,其实就是个子系统,在子系统内可以运行Linux程序,主要是为了吸引Linux的开发者用户的。
Linux和Window是两种不同的 *** 作系统。
我有点不太明白你的问题。
第一种理解:要在Linux下开发Windows的程序。
答案:可以直接在Windows下开发就可以。然后可以通过一些软件让你的Windows软件跑在Linux下,这些软件比如有cygwin。不过目前这类软件的兼容性不能达到100%。
第二种理解:在Linux下开发和Windows一样差不多的程序。这种程序不需要在WIindows下跑,它们实际还是Linux下的程序。只是会显示出Windows那样的窗口状态。
答案:首先你需要一个在Linux运行的Window环境。在Linux下比较有名的Window软件叫XWindows。你可以在你的Linux中运行startx来启动它(你装Linux一定要装了X才可以)。然后有一些开发包支持你在Linux开发有窗口的程序。比如QT,GTK等。
我的 *** 作系统是 debian sarge,其中已经有 mingw32 编译器,只需安装:
apt-get install mingw32这会安装好 mingw32 交叉编译系统,用 i586-mingw32msvc-gcc 即可为 Windows 编译程序。
在编译 wxWidgets 的 Windows 版本之前,需要安装 DirectX 的头文件。大概是由于版权之类的原因,在 Debian
的 mingw32 中并未包含 DirectX 的头文件,只包含了 DirectX 的库,因此需要自己安装。如果不安装,在编译
wxWidgets 的时候会有警告,并且系统不会产生 wxDisplay 这个类。安装并不复杂,只要从网络上找到相关的头文件和库文件,并解压到
/usr/i586-mingw32msvc 目录中即可。
然后就可以编译 wxWidgets 了,下载并解压源码后,用如下命令可以编译:
/configure --host=i586-mingw32msvc --target=i586-mingw32msvc --prefix=~/Workshop/mingw32 --enable-monolithic --disable-shared
make; make install-strip
make -C contrib; make -C contrib install-strip
编译完成后,进入 samples 目录,随便找一个例程 make 一下,便可产生 exe 文件了。要执行这个文件,需要
mingwm10dll 这个文件,在 Debian 中,此文件位于 /usr/share/doc/mingw32-runtime
目录中,把它复制到当前目录,便可用 wine 执行了。如果没有问题,也可以把这个文件仍到 Wine 的 C:\Windows\system32
目录中。
总共又三种方案:
mingw+codeblocks,是windows下的gcc编译工具+跨平台的轻量ide,可以编译c++的程序,还可以使用wxWidget(跨平台的界面工具)
使用cygwin,是windows下中间件级别的编译工具。可以在cygwin下用命令行编译程序。
使用vmware或者其他虚拟机,安装目标linux系统,并且编译。这是虚拟硬件级别的编译工具,其编译的程序是完全可以在linux系统上运行的。
linux是X86架构的,你再linux下编译成功的程序是无法再ARM体系的处理器上运行的。
你要在linux上安装专门给的编译器 arm-linux-gcc,交叉编译后在烧到开发板上运行
在桌面上运行 Linux 本机应用程序比较直观。与 Windows 一样,您通常可以在菜单中找到这些已组织的应用程序,当您想要一个 Windows 应用程序时,只需单击并运行即可。 对于那些需要 root 权限的应用程序,将会提示您输入 root 密码,然后才开始运行。这在概念上类似于 Windows 中的 Run as Administrator 选项。否则,您运行的所有程序都会位于您所登录帐户的用户空间中。 在Windows 中,您可以创建桌面快捷键。Linux 也有类似的快捷键 launcher,您可以将它放在面板或桌面上。单击 launcher 时,快捷键将执行程序。 图1 显示 GNOME Desktop 上 Mozilla Firefox Web 浏览器的两个 launcher。一个 launcher 位于面板上,另一个位于桌面上。 图1 查看桌面或面板上的 launcherMono 许多Windows 应用程序都是使用 NET Framework 开发的。Mono 是 NET 的一个开源实现,可在很多平台上运行(包括 linux)。事实上,Mono 网站称其为 C# 和 Common Language Runtime (CLR) 的一个实现,与 Net 是二进制兼容的。此项目目前由 Xamarin 支持。 在Linux 上,您可以执行使用 NET framework(或 Mono)开发的应用程序,就像在 Windows 上一样。但是,记住 Linux umask 和默认文件权限。您仍然需要提供文件的执行权限,这样 Linux 才会允许执行可执行文件。 在Mono(可以安装在您的 Linux GNOME 桌面上)上开发的一些跨平台应用程序,比如 F-Spot,同本机 GNOME 应用程序一同位于菜单中。F-Spot 是一个管理照片的开源应用程序。尽管它是 C# 应用程序,但是在 GNOME 桌面上表现为一个本机应用程序。为应用程序创建一个 launcher 后,就可以像在 Windows 中那样单击并运行。 图2 演示了基于 Mono 的应用程序 F-Spot 的位置,以及为其创建桌面或面板 launcher 的方法。 图2 为 F-Spot 创建一个 launcherWine Wine 使您可以在 Linux 和其他 *** 作系统上运行 Windows 软件。有了 Wine,您就可以像在 Windows 中那样安装和运行应用程序。Wine 仍然在积极的发展中,而且并不是所有的 Windows 程序都可以使用 Wine。如果您的应用程序是为 Windows *** 作系统编译的,您就会发现它可以使用 Wine 来充分运行,前题是它是一个桌面应用程序而不是一个服务器应用程序。
问题一:可以用wine。到>
以上就是关于linux系统下编译的文件在windows下能运行吗全部的内容,包括:linux系统下编译的文件在windows下能运行吗、Linux 下能不能开发windows的应用程序、linux上如何编译praat源码,编译后是windows版程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)