2016-09-25 140 views
2

我想安装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. 
+0

这个在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

+0

感谢您的回答。在更新perl(5.24.0通过perlbrew)之后,我终于成功构建了Glib!不幸的是,现在它是Gtk2,不会编译...! –

+0

图形库和Perl是臭名昭着的。但它为我工作!™再次使用来自MacPorts的gtk2 @ 2.24.31与来自Perlbrew的5.20.2。 MacPorts还提供了一个Gtk2.pm包(p5-gtk2)。你可能想备份到Perl 5.20或5.22,让模块修复5.24引起的任何问题。 – Schwern

回答

3

这被派往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。

+0

感谢您的帮助!在我通过perlbrew安装了一个新的Perl之后,Glib现在正在建设中。不幸的是,我仍然无法构建Gtk2 ... –

+0

'ARCHFLAGS =“ - arch x86_64”'帮助我安装Ruby glib2 gem。 – Nakilon

-1

我遇到了同样的问题。

安装gtk +作为先决条件修复它。

+0

感谢您的回答,但那会导致不同的错误。 – Schwern

相关问题