无法在OS X上安装Perl模块Glib(El Capitan)
我想安装perl Gtk2,为此我需要首先安装Glib。我试过sudo cpanm Glib
,但编译时出现错误(我也尝试下载.tar.gz源文件等,具有相同的效果)。我也尝试过一个老版本的Glib。我在OS X 10.11(El Capitan)上。这里的错误:无法在OS X上安装Perl模块Glib(El Capitan)
error: '_GStaticAssertCompileTimeAssertion_0' declared as an array with a negative size
我不知道如何解决它...非常感谢,如果任何人都可以为我做点事情! (顺便说一句,brew install glib
工作正常,但它似乎是我试图构建和运行的应用程序 - 例如自动多项选择)正在寻找Gtk2.pm,因此,Homebrew安装的“glib”没有帮助。)
Benjamin
p.-s. :下面是完整的日志,如果有帮助:
cpanm (App::cpanminus) 1.7042 on perl 5.018002 built for darwin-thread-multi-2level
Work directory is /Users/benjamin/.cpanm/work/1474765262.7331
You have make /usr/bin/make
You have LWP 6.05
You have /usr/bin/tar: bsdtar 2.8.3 - libarchive 2.8.3
You have /usr/bin/unzip
Searching Glib() on cpanmetadb ...
--> Working on Glib
Fetching http://www.cpan.org/authors/id/X/XA/XAOC/Glib-1.322.tar.gz
-> OK
Unpacking Glib-1.322.tar.gz
Entering Glib-1.322
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.66)
Checking if you have ExtUtils::PkgConfig 1.000 ... Yes (1.15)
Checking if you have ExtUtils::Depends 0.300 ... Yes (0.306)
Configuring Glib-1.322
Running Makefile.PL
Including generated API documentation...
Checking if your kit is complete...
Looks good
Writing Makefile for Glib
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::Depends 0.300 ... Yes (0.306)
Checking if you have ExtUtils::PkgConfig 1.000 ... Yes (1.15)
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.66)
Building and testing Glib-1.322
cp lib/Glib/CodeGen.pm blib/lib/Glib/CodeGen.pm
cp /Users/benjamin/.cpanm/work/1474765262.7331/Glib-1.322/typemap blib/arch/Glib/Install/typemap
cp lib/Glib/ParseXSDoc.pm blib/lib/Glib/ParseXSDoc.pm
cp doctypes blib/arch/Glib/Install/doctypes
cp devel.pod blib/lib/Glib/devel.pod
cp gperl_marshal.h blib/arch/Glib/Install/gperl_marshal.h
cp lib/Glib/MakeHelper.pm blib/lib/Glib/MakeHelper.pm
cp gperl.h blib/arch/Glib/Install/gperl.h
cp lib/Glib.pm blib/lib/Glib.pm
cp lib/Glib/Object/Subclass.pm blib/lib/Glib/Object/Subclass.pm
cp build/IFiles.pm blib/arch/Glib/Install/Files.pm
cp lib/Glib/GenPod.pm blib/lib/Glib/GenPod.pm
[ XS Glib.xs ]
[ CC Glib.c ]
In file included from Glib.xs:22:
In file included from ./gperl.h:37:
In file included from /usr/local/Cellar/glib/2.48.2/include/glib-2.0/glib-object.h:23:
In file included from /usr/local/Cellar/glib/2.48.2/include/glib-2.0/gobject/gbinding.h:28:
In file included from /usr/local/Cellar/glib/2.48.2/include/glib-2.0/glib.h:30:
In file included from /usr/local/Cellar/glib/2.48.2/include/glib-2.0/glib/galloca.h:32:
/usr/local/Cellar/glib/2.48.2/include/glib-2.0/glib/gtypes.h:422:3: error: '_GStaticAssertCompileTimeAssertion_0' declared as an array with a negative size
G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/glib/2.48.2/include/glib-2.0/glib/gmacros.h:232:103: note: expanded from macro 'G_STATIC_ASSERT'
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
^~~~~~~~~~~~~~~
1 error generated.
make: *** [Glib.o] Error 1
-> FAIL Installing Glib failed. See
/Users/benjamin/.cpanm/work/1474765262.7331/build.log for details. Retry with --force to force install it.
这被派往GitHub issue。
我通过运行找到了问题所在:
cpanm --verbose --build-args=NOECHO=' ' Glib
,这样我可以看到失败的特定编译命令:
cc -c -I. -I/usr/local/Cellar/glib/2.50.0/include/glib-2.0 -I/usr/local/Cellar/glib/2.50.0/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.39/include -D_REENTRANT -arch x86_64 -arch i386 -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector -Os -DVERSION=\"1.323\" -DXS_VERSION=\"1.323\" -o Glib.o "-I/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE" Glib.c
既然问题是事做不匹配sizeof
's,我认为问题在于Perl构建的体系结构不是Homebrew的libglib-2.0的体系结构b反对。
解决方法是指定通过设置ARCHFLAGS
环境变量,你只需要建立x86_64
:
ARCHFLAGS="-arch x86_64" cpanm --verbose Glib
这是所有使用该系统的Perl。如果您希望安装在系统升级过程中长期运行,您将需要使用perlbrew或plenv来安装自己的用户Perl。
感谢您的帮助!在我通过perlbrew安装了一个新的Perl之后,Glib现在正在建设中。不幸的是,我仍然无法构建Gtk2 ... –
'ARCHFLAGS =“ - arch x86_64”'帮助我安装Ruby glib2 gem。 – Nakilon
这个在10.11.6使用glib2 @ 2.48.2从[MacPorts](https://www.macports.org/)与perlbrew安装的Perl 5.20.2编译得很好。 MacPorts版本[有补丁](https://trac.macports.org/browser/trunk/dports/devel/glib2/files),可能HomeBrew没有。 – Schwern
感谢您的回答。在更新perl(5.24.0通过perlbrew)之后,我终于成功构建了Glib!不幸的是,现在它是Gtk2,不会编译...! –
图形库和Perl是臭名昭着的。但它为我工作!™再次使用来自MacPorts的gtk2 @ 2.24.31与来自Perlbrew的5.20.2。 MacPorts还提供了一个Gtk2.pm包(p5-gtk2)。你可能想备份到Perl 5.20或5.22,让模块修复5.24引起的任何问题。 – Schwern