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.
目录
相关文章
|
存储 机器学习/深度学习 算法
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
328 0
|
人工智能 缓存 Shell
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
469 0
|
10月前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
SQL 数据采集 JSON
使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照
本文讨论在不同的数据处理需求中,新版数据加工 SPL 与旧版数据加工 DSL 的使用对照。
7687 96
|
安全 Linux 数据安全/隐私保护
Linux 文件、目录和用户权限管理指南
Linux 文件、目录和用户权限管理指南
719 0
|
算法 关系型数据库 C语言
卡尔曼滤波简介+ 算法实现代码(转)
卡尔曼滤波简介+ 算法实现代码(转)
290 4
|
存储 安全 开发工具
oss客户端加密
阿里云OSS支持客户端加密,允许用户在本地加密数据后上传,确保数据在传输和存储时的隐私安全。用户管理主密钥,控制数据密钥加密与解密,增强数据控制和合规性。此机制适用于高安全需求场景,如金融、医疗等,但用户需负责密钥管理和加密操作。
474 8
|
编译器 C语言 Windows
windows MinGW C语言编译器安装及环境变量配置教程
MinGW被称为Windows版的GCC,安装包下载地址:提示:该安装包下载完之后,相当于安装好了MinGW,之后即可配置环境变量!所以,可以先新建好一个专门用来存放MinGW安装包的文件夹。
533 2
|
JSON API 数据格式
Python实战演练之Python实现一个简单的天气查询应用
Python实战演练之Python实现一个简单的天气查询应用
|
IDE 编译器 开发工具
python与anaconda区别及先后安装的问题
python与anaconda区别及先后安装的问题
python与anaconda区别及先后安装的问题