`
ah_fu
  • 浏览: 228023 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

欣喜的发现,超牛的MinGW

阅读更多
    最近在用WinGW(GCC的WINDOWS版本)调试跨平台的C/C++程序,在链接程序的过程中,两次写错了链接的文件,一次是将.a的后缀误写为.lib,第二次是将.a的后缀误写为.dll,当时没发现,等到一天的工作结束了,躺在床上才想起这个问题。
    为什么啊?链接的文件都写错了,链接应该不能通过的,为什么调试一天的程序都一切正常呢?难道MinGW可以与LIB文件和DLL文件直接链接?

    于是今天专门做了测试。令人欣喜,的确是这样的:MinGW在链接的时候,可以与.LIB文件链接,也可以与DLL文件链接。
   下面是我写的pthread链接的测试程序:
//main.cpp
#include <stdio.h>
#include <pthread.h>

void* _thread_t(void* param)
{
    printf("thread_ok\n");
    return NULL;
}

int main()
{
    pthread_t tid;
    pthread_create(&tid, NULL, _thread_t, NULL);
    pthread_join(tid, NULL);
    getchar();
    return 1;
}
    编译的命令如下:
g++ -o main.o -c main.cpp -g -Wall -I"e:\pthread_wiin32\include"

    下面使用GCC的.a格式的文件进行链接:
g++ -o main.exe main.o "e:\pthread_win32\lib\libpthreadGC2.a"

    以上的链接办法当然能链接通过。

    下面尝试和windows特有的.lib格式的文件进行链接:
g++ -o main.exe main.o "e:\pthread_win32\lib\pthreadVC2.lib"

    欣喜若狂,泪流满面————链接通过了。执行程序,一切正常!!!

    下面再试和DLL链接:
g++ -o main.exe main.o "e:\pthread_win32\lib\pthreadVC2.dll"

    又链接通过,又执行正常!!!高兴得都不知道说啥好了!!!
    MinGW真是超牛啊!内部应该提供了从lib文件和从dll文件获得类型信息的功能!!!由此看来,GCC链接obj文件应该也是可以的。

    不过,总还是有些遗憾。不是为MinGW遗憾,为微软而遗憾:我使用VC8.0(VS2005)编译的obj和LIB文件无法被MinGW链接,能够被MinGW链接的lib文件应该是由版本较早的VC编译器生成的。可惜,我电脑里面没装VC6,没办法测试。有兴趣的朋友如果测试了,希望能告知我结果。
   伟大的开源社区,令人欣喜的GCC,如此兼容并包的功能实在让我们感动。恶心的微软,随着新版的编译器的退出,他们一定修改了obj和lib文件的原有格式,使得GCC无法获得类型信息,如此的小见如此的自私。

   以前在WINDOWS下写OCI和PROC的程序,发现ORACLE的库中没有提供.a格式的链接文件,于是暗暗把ORACLE骂了一顿。而今,发现MinGW可以和lib格式的库链接,姑且就原谅ORACLE了。

    呵呵,GCC让我的心情如此振奋,中午要多吃一碗饭!
 
分享到:
评论

相关推荐

    MinGW mingw64压缩包

    VSCode所需编译器MinGW的mingw64压缩包 MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 ...

    mingw64 v11.2

    MingW64是一款针对Windows平台的GCC(GNU Compiler Collection)移植版,它为64位Windows操作系统提供了GNU工具集,包括编译器、链接器、调试器和其他开发工具。MingW64使得开发者能够在Windows环境下编译和构建遵循...

    windows配置 MinGW mingw64 完整包

    MinGW (Minimalist GNU for Windows) 是一个开源项目,它为Windows操作系统提供了GNU工具集,包括C、C++和其他编程语言的编译器和开发工具。MinGW64是其64位版本,专为在64位Windows系统上进行开发而设计。本教程将...

    MinGW8.1.0.rar

    MinGW(Minimalist GNU for Windows)是一个开源项目,旨在为Windows操作系统提供一个GCC(GNU Compiler Collection)编译环境。MinGW8.1.0是该项目的一个版本,它包含了8.1.0版本的GCC和其他必要的工具链,允许...

    历史版本mingw64

    MingW64是一个针对Windows平台的GCC(GNU Compiler Collection)移植版,它为C和C++等编程语言提供了编译环境。MingW64的名字来源于"Minimalist GNU for Windows",它扩展了原始的MingW项目,支持64位的Windows操作...

    mingw-w64 压缩包

    Mingw-w64 是一个为 Windows 平台构建的开源 GCC (GNU Compiler Collection) 工具链,它提供了原生的 Windows 编译器和运行时环境,支持 32 位和 64 位应用程序的开发。Mingw-w64 项目是对原始 Mingw(仅支持 32 位...

    MinGW-3.4.2.rar_MinGW 3._MinGW-3.4.2.exe_Mini_QT mingw_minigw wi

    MinGW(Minimalist GNU for Windows)是一个开源项目,旨在为Windows操作系统提供一个GCC(GNU Compiler Collection)编译环境。MinGW 3.4.2是该项目的一个较早版本,它包含了一个精简版的GNU工具集,使得开发者能够...

    【MinGW安装包】mingw-18.0.exe

    【MinGW安装包】mingw-18.0.exe

    MinGW全部离线包

    MinGW(Minimalist GNU for Windows)是一个开源项目,旨在为Windows操作系统提供一个GCC(GNU Compiler Collection)编译环境。这个“MinGW全部离线包”包含了一系列必要的工具和库,使得开发者可以在Windows平台上...

    MinGW-6.3.0-1

    MinGW(Minimalist GNU for Windows)是一个开源项目,旨在为Windows操作系统提供一个GCC(GNU Compiler Collection)编译环境。MinGW-6.3.0-1是该项目的一个版本,包含了GCC 6.3.0和其他相关工具,允许开发者在...

    mingw32 V4.9.2

    Mingw32 V4.9.2 是一个针对Windows操作系统编译C和C++程序的开源工具集。 Mingw,全称是“ Minimalist GNU for Windows”,它将GNU Compiler Collection (GCC) 移植到了Windows平台上,使得开发者可以在不依赖...

    MinGW64压缩包下载

    MinGW64是一款针对Windows平台的GCC(GNU Compiler Collection)移植版,专为64位系统设计。这个压缩包包含了开发C++程序所需的基本组件,如编译器、链接器和其他必要的工具。MinGW64的名字是“Minimalist GNU for ...

    MinGW 64位 gcc 4.9.2

    MinGW (Minimalist GNU for Windows) 是一个开源项目,它为Windows操作系统提供了GNU工具集,包括C、C++和其他编程语言的编译器和开发工具。MinGW64是MinGW的一个扩展,专为64位Windows环境设计,提供与MinGW相同的...

    minGW (mingw-get-inst)

    MinGW(Minimalist GNU for Windows)是一个开源项目,旨在为Windows操作系统提供一个GCC(GNU Compiler Collection)编译环境。这个项目使开发者可以在Windows上构建原生的GNU应用程序,而无需依赖于像Microsoft ...

    MinGW 压缩包 免安装解压直接用

    MinGW,全称为 Minimalist GNU for Windows,是一个可移植的GCC(GNU Compiler Collection)环境,专为在Windows操作系统上开发C、C++等语言的应用程序而设计。它提供了头文件、库以及编译器,使得开发者能够在...

    mingw-6.3.zip

    MingW,全称为 Minimalist GNU for Windows,是一个开源的、为Windows环境提供GNU工具集的集合,它使得开发者能够在Windows操作系统上使用GCC(GNU Compiler Collection)进行C、C++和其他编程语言的编译。MinGW-6.3...

    mingw32 下载安装包

    3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发...

    MinGW5.1.4

    MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考&lt;http://www.mingw.org&gt;。 这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC ...

    minGW32-make.rar

    描述中提到的问题是在尝试使用cmake构建项目时,发现缺少了minGW32-make.exe。cmake是一个跨平台的自动化构建系统,用于管理软件项目的构建过程。它不直接编译代码,而是生成特定构建工具(如Makefile)所需的构建...

    mingw 32位 免安装

    MingW,全称为 Minimalist GNU for Windows,是一个开源的开发工具集合,用于在Windows系统上构建和编译原生的Windows应用程序。它提供了GCC(GNU Compiler Collection)等GNU工具链,使得开发者可以在Windows环境下...

Global site tag (gtag.js) - Google Analytics