GDB for MinGW
在gdb> 提示符后,输入list ,查看打印出的test.c程序
如下,附上简单的基于mingw的code:
使用MinGW进行编译和创建(应有程序)
怎样创建一个终端应用程序
这里有一个例子。下面是一个简单的c语言程序的代码示例,请把它剪切并粘贴到一个叫作hello.c的文件中试试看:
#include <stdio.h>
int main(int argc, char **argv)
{
printf ("Hellon");
return (0);
}
假如你想从hello.c生成一个在终端模式下的可执行文件hello.exe.试一下下面的方法:
gcc -c hello.c
这个命令把hello.c编译成一个目标文件hello.o,然后用下面的方法:
gcc -o hello hello.o
这个命令从hello.o文件生成一个可执行的hello.exe文件。事实上,作为一种选择,你可以使用下面的命令把编译和链接放到一步中完成:
gcc -o hello hello.c
下面是一个简单的c++程序的代码示例,复制并粘贴到一个叫hello.cpp的文件中试试看:
#include <iostream>
int main(int argc, char **argv)
{
std::cout << "Hello" << std::endl;
return (0);
}
对于c++程序来说,使用下面的命令来编译和链接:
g++ -c hello.cpp
g++ -o hello hello.o
(同样你可以把他们合并到一步中完成)
2.如何创建windows应用程序
这里有一个例子。下面是一个简单的windows应用程序的代码示例,请把它复制并粘贴到一个叫作hello.c的文件中试试看 :
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
return (0);
}
假如你想从一个叫hello.c的c语言源文件创建一个从窗体执行的(Windows executable)hello.exe,请试用下列命令:
gcc -c hello.c
首先产生了目标文件hello.o,然后用:
gcc -o hello hello.o -mwindows
这会从hello.o创建一个可执行的hello.exe, -mwindows用来说明要创建的是Windows应用程序而非从终端执行的程序,它确保正确的Windows库被链接。
要同时得到一个终端屏幕和标准的Windows应用程序,在
-mwindows标志后面增加一个-mconsole标志(flag)
假如你有新的资源(一个后缀名为.rc的文件)也要添加到你的程序中,你需要编译这些资源文件(resource file)和别的一些资源文件,并且在链接时包含进这些编译过的资源文件以创建你的程序,下面的例子将告诉你怎样编译和链接一个叫做resfile.rc的资源文件:
windres -o resfile.o resfile.rc
gcc -o hello hello.o resfile.o -mwindows
3.怎样创建dll文件?
这里有个例子。把下面的代码复制并粘贴到一个叫dllfct.h的文件中:
#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif
// function to be imported/exported
EXPORT void tstfunc (void);
把下面的代码复制并粘贴到一个叫dllfct.c的文件中:
#include <stdio.h>
#include "dllfct.h"
EXPORT void tstfunc (void)
{
printf ("Hellon");
}
把下面的代码复制并粘贴到一个叫hello.c的文件中:
#include "dllfct.h"
int main ()
{
tstfunc ();
return (0);
}
为了创建一个dll和一个使用他的程序,试试下面的命令:
gcc -c hello.c
gcc -c -DBUILD_DLL dllfct.c gcc -shared -o tst.dll -Wl,--out-implib,libtstdll.a dllfct.o
gcc -o hello.exe hello.o -L./ -ltstdll
MSYS
MSYS是一个window上的类似bash 的shell,可以用来替代Windows自带的cmd.exe。它提供了部分Unix平台上的常用工具,包括make。我们需要安装它,以支持在Eclipse CDT上开发使用Makefile的程序。MinGW.org: Getting Started
附:other info
SourceForge上的MinGW项目里有很多软件包,这些软件包之间互有重叠,相当混
乱,也没有安装说明。实际上,要构建一个MinGW 的开发环境,只需要安装下面四个
软件包:
MSYS-1.0.10.exe
MinGW-5.1.3.exe
gdb-5.2.1-1.exe
msysDTK-1.0.1.exe
下面是这些软件包的说明:
MSYS-1.0.10.exe - Minimal SYStem
一个Unix仿真Shell环境,类似Cygwin。安装后会提示定位MinGW的目录,也可以
通过手工修改安装目录下的etc/fstab来完成。
MinGW-5.1.3.exe - MinGW
这只是一个下载器,相当于Cygwin的setup.exe。运行后会自动获取mingw.ini文
件,其中包含Current、Previous、Candidate三个版本的文件列表。目前选 Current
版本会安装以下这些:
mingw-runtime-3.13.tar.gz
w32api-3.10.tar.gz
binutils-2.17.50-20060824-1.tar.gz
gcc-core-3.4.5-20060117-1.tar.gz
gcc-g++-3.4.5-20060117-1.tar.gz
gcc-g77-3.4.5-20060117-1.tar.gz
gcc-ada-3.4.5-20060117-1.tar.gz
gcc-java-3.4.5-20060117-1.tar.gz
gcc-objc-3.4.5-20060117-1.tar.gz
mingw32-make-3.81-2.tar.gz
安装后就得到了一个基本的Win32 gcc开发环境。该环境可以集成在MSYS 中,也
可以独立运行。建议把MinGW安装到MSYS的安装目录下的mingw目录。
gdb-5.2.1-1.exe
这个虽然版本比较老,不过目前Current的就是这个。安装到MinGW的目录下。
msysDTK-1.0.1.exe - MSYS Developer Tool Kit
MSYS只包含了sh、sleep、等最基本的工具,而msysDTK中提供了更多开发工具。
如perl、openssh、automake、autoconf等。仅安装msysDTK-1.0.1.exe中并不能得到
完整的msysDTK,还需要手工安装以下软件包:
bison-2.0-MSYS.tar.gz
file-4.16-MSYS.tar.bz2
join_paste_textutils-2.1-MSYS.tar.bz2
m4-1.4.7-MSYS.tar.bz2
mktemp-1.5-MSYS.tar.bz2
msys-autoconf-2.59.tar.bz2
msys-automake-1.8.2.tar.bz2
msys-libtool-1.5.tar.bz2
安装方法就是在根目录下解压缩这些文件。
一般来说,安装以上四个软件包后,就可以进行绝大多数基于MinGW 的开发了。
如果有需要还可以安装mingw-utils、insight等其他软件包。
另外,MSYS-1.0.10.exe带的Shell是bash 2.04,建议安装bash 3.1或者更新的。
如果需要不同版本的gcc编译环境,建议在根目录下建立若干MinGW目录,使用时
通过修改etc/fstab来控制/mingw指向不同版本。这也是为什么不推荐把MinGW直接装
到MSYS根目录的原因。