为什么Cygwin64的MinGW编译器产生32位指针而不是64位指针?

时间:2017-02-04 23:56:18

标签: windows pointers cygwin mingw sizeof

做' sizeof(char *)'来自' C'程序在使用Cygwin64的MinGW编译器的64位Windows中显示指针长4个字节而不是8个字节。我特意使用编译器' i686-w64-mingw32-gcc.exe',这是我迄今为止在Cygwin64中发现的唯一MinGW编译器。我已经读过关于WOW64' WOW64' Windows中的系统模拟32位环境,但怀疑这是否与问题有关。到目前为止,我所读过的所有内容都指出64位MinGW编译器的指针应该是8个字节长。所以我对此感到困惑,当然想知道如何能够编译使用64位指针的程序与Cygwin64的MinGW。

2 个答案:

答案 0 :(得分:0)

没有默认的交叉编译器,而是存在 是64和32位的2套。

mingw64-x86_64- *
mingw64-i686- *

https://cygwin.com/ml/cygwin-announce/2017-01/msg00035.html

答案 1 :(得分:0)

我决定只使用我下载的其他MinGW编译器。在我分离了提供MinGW编译器的特定Cygwin64下载文件然后解压缩并搜索它的可执行文件之后,我发现它只包含上面提到的一个32位MinGW编译器。因此,由于matzeri对该网页信息提供了下面的参考,我还不能提出有用的意义,我认为以下是迄今为止这个问题的最佳解决方案。我发现了一个NON-Cygwin 64位MinGW编译器,它可以在线使用,除了Cygwin的各种编译器之外,我还需要安装它才能创建真正的64位可执行文件。我从网站“https://sourceforge.net/projects/mingw-w64/”下载了它,它似乎可以很好地生成64位指针! (警告:一个名为“Dev-Cpp 5.11 TDM-GCC 4.9.2 Orwell + Mingw”的更多引用的64位MinGW编译器,在我使用防病毒软件App扫描时显示为包含特洛伊木马病毒的ClamWin!)