cygwin中gcc的正确包名是什么?

cygwin中gcc的正确包名是什么?,gcc,compilation,cygwin,installation,packages,Gcc,Compilation,Cygwin,Installation,Packages,我需要在cygwin上安装gcc, 但是,当我在cygwin安装程序中搜索gcc时,我会得到几个名称中带有字符串“gcc”的结果,例如: cygwin32-gcc-ada cygwin32-gcc-core cygwin32-gcc-fortran cygwin32-gcc-g++ cygwin32-gcc-objc++ ... gcc-ada gcc-core gcc-fortran gcc-g++ ... libgcc1 minigw-gcc-core minigw-gcc-g++ ....

我需要在cygwin上安装gcc, 但是,当我在cygwin安装程序中搜索gcc时,我会得到几个名称中带有字符串“gcc”的结果,例如:

cygwin32-gcc-ada
cygwin32-gcc-core
cygwin32-gcc-fortran
cygwin32-gcc-g++
cygwin32-gcc-objc++
...
gcc-ada
gcc-core
gcc-fortran
gcc-g++
...
libgcc1
minigw-gcc-core
minigw-gcc-g++
....
minigw64-i686-gcc-core
minigw64-i686-gcc-g++
...
当我在ubuntu的synaptic中搜索gcc时,我有一个非常明显的结果 我该拿这些名字怎么办?全部安装? 安装一个随机的,然后创建符号链接到它的二进制文件可能到达的/usr/bin/gcc

当我试图搜索一个我一直在线阅读的gcc,我需要构建不在cygwin安装程序上的包时,这些包名会显示出什么有用性和生产力

我在任何地方都读到“在cygwin上安装gcc,然后继续这样做”,而且“他们从来没有提到上面的哪个gcc包是唯一正确的

好像世界各地的每个人都知道哪一个gcc是正确的,而且信息在网上找不到

我希望得到澄清和进一步帮助

编辑: 在过去的某个时候,实际上曾经有一个名为“gcc”的包, 我从这里的截图中发现:


我不知道那是多少年前的事了。

以下是在64位Cygwin中编译32位二进制文件的方法:

cygwin32-gcc-ada
cygwin32-gcc-core
cygwin32-gcc-fortran
cygwin32-gcc-g++
cygwin32-gcc-objc++
...
以下是gcc的主要部分。如果您不需要这些特定的语言,比如Ada或Fortran,就不要安装它们

gcc-ada
gcc-core
gcc-fortran
...
这是gcc所需的库

libgcc1
mingw(不是minigw…那些似乎是打字错误的)版本用于在Cygwin中编译不依赖于Cygwin1.dll的程序。使用这些工具构建的程序使用Microsoft C RTL,可以安装在没有Cygwin的系统上。它们也不受Cygwin相当严格的开放源码许可的约束。名称不包含64-i686的用于生成32位二进制文件,而名称包含64位二进制文件的用于生成64位二进制文件

mingw-gcc-core
mingw-gcc-g++
....
mingw64-i686-gcc-core
mingw64-i686-gcc-g++

请注意,您可以在中看到所有这些信息。

使Cygwin GCC包混淆的是:

  • gcc-core
    cygwinXX-gcc-core
    的关系令人困惑(
    XX
    是32还是64取决于您的Cygwin体系结构)
  • 对于MinGWMinGW-w64,都有不同的项目包,尽管许多人不知道它们的共存(我曾经是)
截至2015年10月,Cygwin GCC包的分解如下

在Cygwin x86中(32位):

项目:Cygwin GCC(通过链接到cygwin1.dll启用Windows POSIX的可执行文件) 包目标ARCH主二进制+链接(版本化链接除外) gcc核心x86/usr/bin/gcc.exe /usr/bin/cc(符号链接) /usr/bin/i686-pc-cygwin-gcc.exe(硬链接) cygwin64 gcc核心x86_64/usr/bin/x86_64-pc-cygwin-gcc.exe 项目:MinGW(Windows 32位独立可执行文件) 包目标ARCH主二进制+链接(版本化链接除外) mingw gcc core x86/usr/bin/i686-pc-mingw32-gcc.exe 项目MinGW-w64(MinGW的分支用于构建64位) 包目标ARCH主二进制+链接(版本化链接除外) mingw64-i686-gcc-core x86/usr/bin/i686-w64-mingw32-gcc.exe mingw64-x86_64-gcc-core x86_64/usr/bin/x86_64-w64-mingw32-gcc.exe 在Cygwin x86_64中(64位):

项目:Cygwin GCC(通过链接到cygwin1.dll启用Windows POSIX的可执行文件) 包目标ARCH主二进制+链接(版本化链接除外) gcc核心x86_64/usr/bin/gcc.exe /usr/bin/cc(符号链接) /usr/bin/x86_64-pc-cygwin-gcc.exe(硬链接) cygwin32 gcc核心x86/usr/bin/i686-pc-cygwin-gcc.exe 项目:MinGW(Windows 32位独立可执行文件) 包目标ARCH主二进制+链接(版本化链接除外) mingw gcc core x86/usr/bin/i686-pc-mingw32-gcc.exe 项目MinGW-w64(MinGW的分支用于构建64位) 包目标ARCH主二进制+链接(版本化链接除外) mingw64-i686-gcc-core x86/usr/bin/i686-w64-mingw32-gcc.exe mingw64-x86_64-gcc-core x86_64/usr/bin/x86_64-w64-mingw32-gcc.exe
这取决于你计划使用什么语言——如果你不需要Ada、Fortran等,那么就不要安装它们。但是,一旦我安装了gcc安装,我是否需要做一些非常重要的事情,以确保环境知道,当在终端中键入“gcc”时,脑海中的特定gcc就是要使用的?另外,如果是这样的话,那么我是否需要为我正在执行的每个独特的编译执行此操作?一次又一次地(假设我——我不知道如何知道——可能会看到我下载的某个源需要gcc-x,另一个需要gcc-y,我会在它们之间切换,其中一个是“MAIN-USED-gcc”)。OP的第一条评论的答案是设置CC环境变量,例如。,
导出CC=cygwin32 gcc
。请参阅另一个示例。尽管您对
gcc核心的看法有点错误,但我还是投了赞成票。请看我的答案。非常好的答案,但你没有真正提到差异。
PROJECT: Cygwin GCC (Windows POSIX-enabled executables via linking to cygwin1.dll)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    gcc-core                   x86            /usr/bin/gcc.exe
                                              /usr/bin/cc (symlink)
                                              /usr/bin/i686-pc-cygwin-gcc.exe (hard link)
    cygwin64-gcc-core          x86_64         /usr/bin/x86_64-pc-cygwin-gcc.exe

PROJECT: MinGW (Windows 32-bit standalone executables)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    mingw-gcc-core             x86            /usr/bin/i686-pc-mingw32-gcc.exe

PROJECT MinGW-w64 (fork from MinGW for building 64-bit)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    mingw64-i686-gcc-core      x86            /usr/bin/i686-w64-mingw32-gcc.exe
    mingw64-x86_64-gcc-core    x86_64         /usr/bin/x86_64-w64-mingw32-gcc.exe
PROJECT: Cygwin GCC (Windows POSIX-enabled executables via linking to cygwin1.dll)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    gcc-core                   x86_64         /usr/bin/gcc.exe
                                              /usr/bin/cc (symlink)
                                              /usr/bin/x86_64-pc-cygwin-gcc.exe (hard link)
    cygwin32-gcc-core          x86            /usr/bin/i686-pc-cygwin-gcc.exe

PROJECT: MinGW (Windows 32-bit standalone executables)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    mingw-gcc-core             x86            /usr/bin/i686-pc-mingw32-gcc.exe

PROJECT MinGW-w64 (fork from MinGW for building 64-bit)

    PACKAGE                    TARGET ARCH    MAIN BINARY + LINKS (except versioned link)
    mingw64-i686-gcc-core      x86            /usr/bin/i686-w64-mingw32-gcc.exe
    mingw64-x86_64-gcc-core    x86_64         /usr/bin/x86_64-w64-mingw32-gcc.exe