【问题标题】:MinGW-w64 offline installerMinGW-w64 离线安装程序
【发布时间】:2016-07-15 10:24:50
【问题描述】:

有什么方法可以离线安装 mingw-w64 吗?我尝试了许多官方资源,所有这些资源似乎都需要某种互联网访问权限。我正在寻找适用于 x32 和 x64 系统的东西。我试图查看the official repository,但我不确定我需要哪些文件来完成这项任务。

提前致谢!

【问题讨论】:

标签: mingw-w64


【解决方案1】:

虽然以下内容尚未完全测试,但离线安装程序似乎没有必要。根据错误报告的一些屏幕截图,在线安装程序会提出以下问题...

Version .......... seems to be the GNU GCC version number
Architecture ..... i686 / x86_64
Threads .......... posix / win32
Exception ........ dwarf / sjlj / seh
Build Revision ... 0 / 1 / 2 / ...

Install folder ... e.g. c:\mingw

Create desktop shortcuts?

前 5 个选项用于选择单个下载包。我不了解你,但我不知道为线程和异常选择什么。纯粹基于下载统计数据,posix 线程的使用量是 win32 的两倍多,seh 在 64 位上似乎更受欢迎,在 32 位上显得矮小,sjlj 似乎很不受欢迎。我猜 32 位的 posix 和 dwarf 是默认的。

为了确定选择是什么,它使用来自this folder 的文件repository.txt。这只是一个以管道分隔的文本文件 - 这 5 个主要选项的 5 个字段,加上要下载的包的 URL。

顺便说一句,如果有人知道在哪里可以找到安装程序的源代码,我非常感谢您发表评论 - 我已经到处寻找,例如找到错误报告,但未找到安装程序的来源。不过,mingw-64 二进制包的来源很容易找到。

二进制包本身位于this folder (Win32)this folder (Win64) 的子文件夹中。

我不确定安装程序提供创建的快捷方式是什么——这是 MinGW-w64,而不是 MSYS 或 MSYS2,因此没有基于 bash 的 shell 可以提供快捷方式。可能它们只是设置了路径的 Windows 命令提示符快捷方式。

除了快捷方式问题之外,您只需将软件包解压缩到合适的文件夹,确保 mingw32\bin 或 mingw64\bin 文件夹以某种方式位于路径上,然后您就应该完成了。我已经使用其中一个 32 位 gcc-5.4.0 软件包对此进行了测试 - g++ 编译了一个没有问题的 hello-world。

从更远的here (32 bit) 开始,子文件夹中有替代的第三方构建,以及针对 64 位和其他构建的 * 文件夹的不同工具链的类似子文件夹。 ray_linn 有各种构建,包括 Ada(和 Objective C/C++?)支持。 rubenvb 有一些较旧的 GCC 和 Clang 版本。 dongsheng-daily 看起来像每日构建,甚至包括实验性 GCC 7。

如果您也需要 MSYS,请在 cmets 中告诉我。我已经离线安装了一段时间(连同 MinGW32),所以我有一个要安装的软件包的列表。你需要很多包,从 SourceForge 获取它们很痛苦,但是一旦你有了它们,它大多只是再次解包。有一些小的“安装后”要做 - 一些要创建的文件,主要是在哪里可以找到 MinGW,以及创建 shell 的快捷方式。我有 AutoIt 脚本可以做到这一点 - 有点乱,使用不适当的方法,因为它们是我当时在 AutoIt 中所知道的,但它们工作正常。

有 MSYS2,但乍一看这是另一个在线安装假设的问题,使用 pacman 包管理器 - 可能非常方便,但不适合不会使用它的少数人。

【讨论】:

  • 优秀。感谢您指出 repository.txt 文件。我复制了所需版本的 url,并将其粘贴到浏览器中以下载 .7z 文件。然后我通过sneakerNet把它移到离线PC上,然后解压。 gFortran 运行。
  • 我在我的(在线)笔记本电脑上运行了 mingw-w64-install.exe。安装的顶级目录中有四个不在 .7z 文件中的文件:uninstall.exe、uninstall.ini、mingw-w64 和 mingw-w64.bat。 mingw-w64 是一个快捷方式。 mingw-w64.bat 将 bin 目录添加到 PATH 并打开一个 cmd 窗口。更有趣的是,Windows 卸载或更改程序 显示了新安装的 MinGW-W64。如果安装程序没有在注册表中添加任何内容,Windows 就不会知道 MinGW-W64,对吧?你认为那是关于什么的?
  • @riderBill - 抱歉,我认为您对卸载程序的注册表是正确的,但我现在不使用此离线“安装”。据我记得官方 MinGW32 和 MSYS 安装程序也做了他们需要注册卸载程序的任何事情,但这是唯一的注册表使用,如果我自己“安装”它,它不会打扰我“卸载”它(删除文件夹)我自己。现在,我很少在 Windows ATM 上编程,但我购买了一个 win7pro 许可证,专门用于在 Linux 中的虚拟机中运行,这样我就可以让它上线并在上面运行 MSYS2(偶尔)。
  • 注册卸载程序是有意义的。为什么我没有想到呢? <:>
【解决方案2】:

是的,如果您先在面向 Internet 的机器上使用 MSYS2 的 pacman,然后将 pacman 下载的文件传输到您的离线机器,您可以离线安装 mingw-w64。

对于您的问题,pacman 的优点在于它可以获取所有依赖项的正确版本。

在您面向互联网的机器上:

  1. 使用来自http://www.msys2.org/ 的 MSYS2 安装程序
  2. 运行 MSYS2,并使用 pacman -Syu 更新包数据库
  3. 在您的 MSYS2 终端中,创建一个文件夹以包含您想要的包(即 mingw-w64)

    mkdir ~/offline_packages
    cd ~/offline_packages
    pacman -Syw base base-devel mingw-w64-x86_64-toolchain --cachedir .
    
  4. 使用 pacman 的 repo-add 脚本将所有内容捆绑到数据库中:

    repo-add ./offline.db.tar.gz ./*
    
  5. 将 MSYS2 安装程序和 ~/offline_packages 复制到您的外部闪存驱动器。

在您的离线机器上:

  1. 安装 MSYS2。
  2. offline_packages 文件夹从闪存驱动器复制到 MSYS2 可以访问的路径(例如 C:/msys64/home/user/offline_packages
  3. 编辑C:/msys64/etc/pacman.conf

    1. 注释掉[mingw32], [mingw64], [msys] 存储库。
    2. 添加一个新的存储库。此示例使用上面给出的任意路径。修改为指向您复制 offline_packages 文件夹的位置。

      [offline]
      SigLevel = Optional
      Server = file:///home/user/offline_packages
      
  4. 在 MSYS2 终端中,将 pacman 数据库与您的新存储库同步

    pacman -Syu
    
  5. 安装mingw-w64等

    pacman -S --needed base base-devel mingw-w64-x86_64-toolchain
    
  6. 完成!

参考资料: https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Installation_and_recovery

【讨论】:

  • 我在写答案时遇到的问题是我唯一的面向互联网的机器运行 Linux。我似乎很奇怪有这样一种情况,即(我认为)起源于 *nix 世界的包管理器可能更难在那里使用,即使是对于这种奇怪的极端情况(但如果事实证明不是这样的话,令人印象深刻)。 ATM 我有几个面向 Internet 的 Win7 虚拟机,这些技巧对我来说绝对有用。
  • 嗯,这个过程在 Windows 7 互联网端和 Windows 10 VDI 端非常有效。我已经使用 Cygwin 很多年了,但是 Cygwin 只是有些东西不玩,而 MSYS64 是正确的解决方案。
  • "base" "base-devel" "mingw-w64-x86_64-toolchain" 的宏包内容在哪里定义?
  • @Nufosmatic:“base”、“base-devel”和“mingw-w64-x86_64-toolchain”的 MSYS2 存储库都是 ,因此它们定义在MSYS2 groups page。 (相关,这里给出了相应的 Arch 组:“base”和“base-devel”,在Arch groups overview page)。
猜你喜欢
  • 2020-06-19
  • 2015-05-15
  • 2015-07-08
  • 1970-01-01
  • 2021-10-23
  • 2013-06-19
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多