【发布时间】:2016-07-15 10:24:50
【问题描述】:
有什么方法可以离线安装 mingw-w64 吗?我尝试了许多官方资源,所有这些资源似乎都需要某种互联网访问权限。我正在寻找适用于 x32 和 x64 系统的东西。我试图查看the official repository,但我不确定我需要哪些文件来完成这项任务。
提前致谢!
【问题讨论】:
标签: mingw-w64
有什么方法可以离线安装 mingw-w64 吗?我尝试了许多官方资源,所有这些资源似乎都需要某种互联网访问权限。我正在寻找适用于 x32 和 x64 系统的东西。我试图查看the official repository,但我不确定我需要哪些文件来完成这项任务。
提前致谢!
【问题讨论】:
标签: mingw-w64
虽然以下内容尚未完全测试,但离线安装程序似乎没有必要。根据错误报告的一些屏幕截图,在线安装程序会提出以下问题...
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 包管理器 - 可能非常方便,但不适合不会使用它的少数人。
【讨论】:
是的,如果您先在面向 Internet 的机器上使用 MSYS2 的 pacman,然后将 pacman 下载的文件传输到您的离线机器,您可以离线安装 mingw-w64。
对于您的问题,pacman 的优点在于它可以获取所有依赖项的正确版本。
在您面向互联网的机器上:
pacman -Syu 更新包数据库
在您的 MSYS2 终端中,创建一个文件夹以包含您想要的包(即 mingw-w64)
mkdir ~/offline_packages
cd ~/offline_packages
pacman -Syw base base-devel mingw-w64-x86_64-toolchain --cachedir .
使用 pacman 的 repo-add 脚本将所有内容捆绑到数据库中:
repo-add ./offline.db.tar.gz ./*
~/offline_packages 复制到您的外部闪存驱动器。在您的离线机器上:
offline_packages 文件夹从闪存驱动器复制到 MSYS2 可以访问的路径(例如 C:/msys64/home/user/offline_packages)编辑C:/msys64/etc/pacman.conf
[mingw32], [mingw64], [msys] 存储库。添加一个新的存储库。此示例使用上面给出的任意路径。修改为指向您复制 offline_packages 文件夹的位置。
[offline]
SigLevel = Optional
Server = file:///home/user/offline_packages
在 MSYS2 终端中,将 pacman 数据库与您的新存储库同步
pacman -Syu
安装mingw-w64等
pacman -S --needed base base-devel mingw-w64-x86_64-toolchain
参考资料: https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Installation_and_recovery
【讨论】: