MinGW的优势

简介: MinGW的优势

之前的文章已经演示了 用 MinGW gcc 编译出 exe 文件,打印一个 hello。

但是 用 MSVC 一样能编译出 exe,打印一个 hello。那用 MinGW 的 gcc 意义何在。


点击 C:\MinGW\bin\mingw-get.exe ,勾选下面的 mingw32-pthreads-w32dev 安装包,安装到 MinGW。

安装完成之后,在 include 目录下就多了一个 pthread.h 头文件,如下:



在 C:\MinGW\projects 下面新建一个项目 zeus-pthread ,新建一个文件 zeus-pthread.c ,代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
static void * pthread(void *arg)
{
    printf("hello ffmpeg 1\n");
    return NULL;
}
int main(int agrc,char* argv[])
{
    pthread_t tidp;
    /* 创建线程pthread */
    if ((pthread_create(&tidp, NULL, pthread, NULL)) == -1)
    {
        printf("create error!\n");
        return 1;
    }
    /* 等待线程pthread释放 */
    if (pthread_join(tidp, NULL))
    {
        printf("thread is not exit...\n");
        return -2;
    }
    printf("hello ffmpeg 2\n");
    return 0;
}

执行以下命令开始编译:

cd C:\MinGW\bin
.\gcc.exe -g3 -c -o C:\MinGW\projects\zeus-pthread\zeus-pthread.o C:\MinGW\projects\zeus-pthread\zeus-pthread.c
.\gcc.exe -g3 -o C:\MinGW\projects\zeus-pthread\zeus-pthread.exe C:\MinGW\projects\zeus-pthread\zeus-pthread.o -lpthread

我们把 zeus-pthread.exe 移动到 C:\MinGW\bin 目录下,因为依赖一些 DLL。

这完全 跟 在 Linux 使用 gcc 跟多线程函数一样。

我们再用 Dependencies 查看一下 zeus-pthread.exe 的依赖库,如下:

只依赖于两个 dll。Windows 平台原本是没有 pthread_create 函数的。


不过 MinGW 没有 提供 fork 函数。如果需要更好的移植性,可以使用 cywin,cywin 有 fork 函数。

下面是 官网 介绍的 MinGW 的优势。


Headers, Libraries and Runtime

  • More than a million lines of headers are provided, not counting generated ones, and regularly expanded to track new Windows APIs.
  • Everything needed for linking and running your code on Windows.
  • Winpthreads, a pthreads library for C++11 threading support and simple integration with existing project.
  • Winstorecompat, a work-in-progress convenience library that eases conformance with the Windows Store.
  • Better-conforming and faster math support compared to VisualStudio's.

Tools

  • gendef: generate Visual Studio .def files from .dll files.
  • genidl: generate .idl files from .dll files.
  • widl: compile .idl files.
目录
相关文章
|
8月前
|
编译器 C语言 Windows
cryptopp使用Qt mingw编译,以及海思平台交叉编译
cryptopp使用Qt mingw编译,以及海思平台交叉编译
190 0
|
8月前
|
Linux 编译器 开发工具
【Linux】环境基础开发工具的使用之gcc详解(二)
【Linux】环境基础开发工具的使用之gcc详解(二)
|
7月前
|
IDE Linux 开发工具
在Qt开发环境中qmake和cmake的区别优势
选择qmake还是CMake,主要取决于项目的需求和开发者的熟悉程度。如果你正在开发一个纯Qt项目,或者是一个不需要复杂构建脚本的小型项目,qmake可能是一个更好的选择。反之,如果你的项目需要处理复杂的依赖关系,或者你想要一个在多种编程环境中都能工作的构建系统,那么CMake可能是更好的选择。
979 2
|
7月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
209 0
|
8月前
|
算法 编译器 测试技术
跨平台构建的艺术:使用 CMake 实现项目移植的全面指南
跨平台构建的艺术:使用 CMake 实现项目移植的全面指南
438 5
|
8月前
|
Linux 编译器 开发工具
『Linux升级路』基础开发工具——make/Makefile篇
『Linux升级路』基础开发工具——make/Makefile篇
|
8月前
|
Linux 开发工具 C语言
『Linux升级路』基础开发工具——gcc/g++篇
『Linux升级路』基础开发工具——gcc/g++篇
|
存储 Linux 开发工具
【Linux取经路】基础开发工具——make(二)
【Linux取经路】基础开发工具——make(二)
82 0
【Linux取经路】基础开发工具——make(二)
|
Linux 编译器 开发工具
【Linux取经路】基础开发工具——make(一)
【Linux取经路】基础开发工具——make(一)
93 0
|
Linux 编译器 开发工具
【Linux取经路】基础开发工具——gcc/g++篇
【Linux取经路】基础开发工具——gcc/g++篇
107 0