【问题标题】:msys2 and mingw64 gcc version mismatch? (msys-perl)msys2 和 mingw64 gcc 版本不匹配? (msys-perl)
【发布时间】:2016-03-14 02:31:57
【问题描述】:

我刚刚安装了 msys2 和 mingw64,以及它们的开发包。我真的需要perl-Gtk3。 Perl是msys2,用gcc-4.9.x编译,Gtk和朋友是mingw,用gcc-5编译。

在构建 Glib 时,Perl 抱怨“Glib.c:可加载库和 perl 二进制文件不匹配(获取握手密钥 0xde00080,需要 0xdd80080)”。这应该工作吗?

谢谢。

PS ... mingw-w64-x86_64-perl 只是 无法 编译。是的,我小心使用 mingw shell 和 msys shell。

【问题讨论】:

  • 为什么以及如何构建 glib?
  • 我正在尝试将一个 msys2 perl 链接到它。 Glib,Gtk3和朋友都是mingw64 ... msys2 perl是msys2。
  • MSYS2 有一个 glib2 包;这不是你需要的吗? github.com/Alexpux/MSYS2-packages/blob/master/glib2/PKGBUILD 再说一次,既然你在寻求帮助构建 glib,你应该准确地解释你是如何尝试构建它的,而不是让人们猜测。
  • 是的,glib2 在那里,但是 gtk3 堆栈的其余部分呢?顺便说一句... msys2 pkg-config 似乎对此一无所知。真正的问题是,msys2 和 mingw 可以使用不同的主版本号 gcc 吗?尝试链接到 Glib 时的 perl 错误似乎表明这是一个问题。
  • 是的,msys2 环境使用 GCC 4 应该没问题,而 mingw-w64 环境使用 GCC 5。您链接在一起的任何二进制文件都应该来自这些工具链中的一个且只有一个;不要尝试将 msys2 事物与 mingw-w64 事物链接。

标签: msys2


【解决方案1】:

你还有这个问题吗?到目前为止,我已经能够在 MinGW64 中构建 Perl 开发环境。

我已经能够在那个环境中构建 Perl Gtk2 / Gtk3 应用程序并且 GUI 可以工作。 (基于 Gtk2 和 Gtk3)。这些应用程序用于拥有数千个桌面用户的生产环境。该应用程序在 OSX、Windows 和 Linux 上运行,并且可以打包成二进制文件作为这些操作系统的“可执行文件”发布。此处的详细信息适用于 Windows 版本。

我首先使用 pacman 安装必要的系统包,然后根据需要使用 makepkg-mingw 从源代码重建我可能修改过的任何系统库包。

然后我使用 CPAN shell 和“look”命令构建必要的 Perl 模块。

我使用 pkg-config 来检测需要哪些库和头文件。

然后我使用perl Makefile.PL 命令构建(至少)Perl Glib、Pango、Cairo、Gtk2 和 Gtk3 模块。

需要将 LIBS 和 INC 选项添加到该命令中,以创建包含正确头文件和指向正确库的链接的 Makefile。 Makefile 的 EXTRALIBS 和 LDLOADLIBS 部分需要正确。

ExtUtils::MM_Win32.pm ExtUtils::Liblist::Kid.pm 也需要编辑,因为 MinGW64 perl 报告的archname 不同。

我只是给出一个一般性的答案,因为我正在考虑在此发布一个 YouTube 视频。如果这是一个理想的主题,我会的。

【讨论】:

    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 2017-05-31
    • 2022-06-25
    • 1970-01-01
    • 2015-12-04
    • 2022-01-13
    • 1970-01-01
    • 2016-06-11
    相关资源
    最近更新 更多