在Linux使用mingw32来编写win32程序
MinGW - Minimalist GNU For Windows
Mingw32 是 GNU 計畫工具的集合,包含了大量的標頭檔(header files)、函式庫與指 令程式。目的在提供免費的工具以生產製作可於 Winodws 上直接執行而無須依賴輔助函式 庫的原生程式(Native Windows programs)。
在 Debian 系統中,您可以安裝 DebianPackages:mingw32 、DebianPackages:mingw32-binutils 與 DebianPackages:mingw32-runtime 三個套件軟體。
- DebianPackages:mingw32 - Minimalist GNU win32 (cross) compiler 包含 win32 跨平台編譯器
- DebianPackages:mingw32-binutils - Minimalist GNU win32 (cross) binutils 包含 win32 跨平台指令集
- DebianPackages:mingw32-runtime - Minimalist GNU win32 (cross) runtime 函式庫及標頭檔
DebianPackages:mingw32 包含的就是 g++(c++,cpp)、gcc(cc)、gcov、gccbug 等必備的 win32 跨平台編譯器,您需要這些編譯器產生可在 Microsoft Windows 上使用的 exe、dll 檔案等。DebianPackages:mingw32-binutils 則是 nm、strip、ar、ranlib、dlltool、as、ld、windres、addr2line、size、objdump、readelf 等,在產生原生程式時必要的工具。這些指令為了與原生編譯器有所區別,目錄與其他軟體大不相同,擺在 /usr/i586-mingw32msvc/ 中。指令命名原則也以 i586-mingw32msvc 開頭。
例如產生一個 console executable 執行檔。
user@debian:~$ cat hello.cpp
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "Hello world\n";
return 0;
}
user@debian:~$ i586-mingw32msvc-g++ -o hello.exe hello.cpp
user@debian:~$ file hello.exe
hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
如果你安裝了 wine,你甚至可以直接執行它。由於 wine 配合 binfmt-support 使用,因此你的系統應該懂著識別 .exe 檔案,並以 wine 執行他。
user@debian:~$ ./hello.exe
Hello world
Wine exited with a successful status
或者編譯一個顯示一個訊息窗的圖形化使用者介面程式
user@debian:~$ cat > hello.cpp
#include <windows.h>
int WINAPI WinMain(HINSTANCE d1, HINSTANCE d2, LPSTR d3, int d4)
{
MessageBox(NULL, "Hello, World!", "", MB_OK);
return(0);
}
user@debian:~$ i586-mingw32msvc-g++ -o hello.exe hello.cpp -mwindows
user@debian:~$ file hello.exe
hello.exe: MS Windows PE 32-bit Intel 80386 GUI executable not relocatable
您大概注意到指令中新增了 "-mwindows" 參數,這是用來建立 "Windows Application" 而非 "Console Application",並在連結(linking) 過程中確保使用 Windows 函式庫。上述 我們只顯示 "Hello World" 字串的範例中,便是所謂的 "Console Application",執行時 會啟動一個主控台(Console)視窗。您可以加上 " -mconsole" 以編譯為 "Console Application"。
透過 mingw32 的協助,您可以在 Linux 系統上設計 "Write Once, Run Everywhere" 的 C / C++ 程式,例如在 Linux 平台編譯同時支援 Unix 、 Mac 與 Windows 的 putty。
取自"http://wiki.debian.org.tw/index.php/Mingw32"
本頁面已經被瀏覽2,126次。 最後更改10:02 2005年七月14日. 本站所有內容允許以下方式利用: GNU Free Documentation License 1.2
在Linux使用mingw32来编写win32程序的更多相关文章
- linux下对qt编写的程序进行部署
当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题.对于我们在Linux下基于QT编写的图像处理程序,我们采用linuxdeploy ...
- Linux安装jdk,编写helloworld程序
今天学习了Linux安装jdk,做个笔记记录一下. 第一步,确定Linux是32位的还是64位的,然后到oracle官网上下载对应版本的jdk,一般下载.tar.gz文件.查看Linux的版本的命令是 ...
- 在Linux上编写C#程序
自从C#开源之后,在Linux编写C#程序就成了可能.Mono-project就是开源版本的C#维护项目.在Linux平台上使用的C#开发工具为monodevelop.安装方式如下: 首先需要安装一些 ...
- (转载)用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序“
原文地址:http://www.vcerror.com/?p=1483 问题描述: 用VC2013编译了一个程序,在Windows 8.Windows 7(64位.32位)下都能正常运行.但在Win ...
- linux中VI编写C程序。。。
在linux中编写C程序时不像编写shell那样开头要#!/bin/bash,但是在C程序中要指定头文件(头文件是指输入输出,宏等,而且要首先声明,也是必须要开始就声明的) 写好C代码后要给C文件赋予 ...
- Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)
Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...
- Linux多任务编程之六:编写多进程程序及其代码(转)
来源:CSDN 作者:王文松 转自Linux公社 ------------------------------------------------------------------------- ...
- 【深入学习linux】在linux系统下怎么编写c语言程序并运行
1. 首先安装下 gcc : centos yum -y gcc 2. 编写c程序保存hello.c: #include <stdio.h> #include <stdlib.h&g ...
- Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...
随机推荐
- Fitnesse-20140630与RestFixture-3.1编译与运行步骤
为了能使RestFixture-3.1在Fitnesse-20140630中正确打印测试结果,准备修改RestFixture. 1.下载并编译Fitnesse-20140630 以下步骤以在64位Wi ...
- 为Fitnesse-20140630定制RestFixture代码
摘要:Fitnesse插件RestFixture在最新版Fitnesse输出测试结果为html文本,而非html.本博文记录RestFixture定制代码的过程. 准备开发环境 假定你已经正确安装JD ...
- ios游戏开发--cocos2d学习(2)
在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...
- Install_pygments
安装Pygments语法高亮 On OS X Leopard, Snow Leopard 1 $ sudo easy_install Pygments Alternatively on OS X wi ...
- 用原生javascript模拟经典FC游戏公路争霸
#用原生javascript模拟经典FC游戏公路争霸 前几天看了园子里面的随笔 [原生javascript开发仿微信打飞机小游戏](http://www.cnblogs.com/Mr-Nobody/p ...
- 【hbase】使用thrift with python 访问HBase
HBase 版本: 0.98.6 thrift 版本: 0.9.0 使用 thrift client with python 连接 HBase 报错: Traceback (most recent ...
- RStudio Keyboard Shortcuts
Console Description Windows & Linux Mac Move cursor to Console Ctrl+2 Ctrl+2 Clear console Ctrl+ ...
- 优秀java开源项目与解决方案推荐与概论
http://www.oschina.net/project/lang/19/java http://www.open-open.com/ http://java-source.net/ https: ...
- vim MiniBufExplorer 插件
MiniBufExplorer安装好久了,但一直没怎么使用过. 今天查了下资料,作为一个备份. 当你只编辑一个buffer的时候MiniBufExplorer派不上用场, 当 你打开第二个buffer ...
- ActiveX控件的Events事件
http://labview360.com/article/info.asp?TID=10152&FID=165 Active X函式库 对使用LabVIEW作为开发环境的开发人员来说,如果能 ...