代码之家  ›  专栏  ›  技术社区  ›  dawg

构建Perl for osx-特定于体系结构的编译选项

  •  2
  • dawg  · 技术社区  · 15 年前

    多亏了我的建议 Chas. Owens ,我一直玩得很开心 Perlbrew

    我有OSX10.6.4雪豹运行在最近的MacBookPro上。过了一段时间 small diversion 为了在Snow Leopard下正确设置gcc,我在主目录中构建并运行了perl5.12.1,只是使用了默认选项。它通过了Perl测试。

    Perlbrew允许使用操作系统和特定于平台的标志构建Perl。这些是 -D -U -A perlmacosx

    我很想模仿苹果公司在perlv5.10.0系统中使用的开关(您可以通过键入 [path_to_specific_perl]/perl -V /usr/bin/perl 对于大多数情况下的系统…)而不是 -Dprefix=/usr 对于新的Perl构建,不同的根目录会有什么不同,我应该使用什么?

    (目瞪口呆)这里是主要的 差异

    config_args:
    Apple:       -ds -e
    Default:     -de
    
    -D: =======================
    Apple:       useithreads=define, usemultiplicity=define
    Default:     useithreads=undef, usemultiplicity=undef
    
    Compiler: =================
    Apple:       optimize='-Os' 
    Default:     optimize='-O3'
    
    Apple:       -arch x86_64 -arch i386 -arch ppc
    Default:     none specified
    
    Apple:      -g -pipe
    Default     these optimizations are not set
    
    Apple       not set
    Default     -no-cpp-precomp
    
    Linker: ================
    Apple:     useshrplib=true, libperl=libperl.dylib
    Default:   useshrplib=false, libperl=libperl.a
    
    Characteristics of libperl: =============
    Apple      MULTIPLICITY PERL_IMPLICIT_CONTEXT USE_ITHREADS USE_REENTRANT_API
    Default    PERL_MALLOC_WRAP USE_PERL_ATOF
    

    另一个区别是Apple Perl libperl是dynaloader,默认构建是静态链接的。

    所以, 问题 :

    1. 我应该使用开关在OSX10.6+上构建Perl的本地副本吗?我不认为我需要一个像苹果版本那样的胖二进制文件,我也不知道我是否应该做一个dynaloader版本。我主要是在寻找用于优化的建议开关和生成的libperl的建议特性。
    2. 我应该做一个dynaloader版本吗?(即,在OSX意义上的 Dynamic Libraries ...)
    3. /usr/bin/perl文件 我不想改变它。我是否更改脚本中的sheebang以指向Perl的Perlbrew版本?这意味着我的sheebang将是`/Users/andrew/perl5/perl'。我是否要更改路径以指向那里?其他人在这方面做了什么?什么是“最佳实践”?
    4. v-string in use/require non-portable at ./perlbrew line 818. Perlbrew的818号线是 use 5.8.0; 那条线应该是吗 use 5.008_000

    编辑

    多亏了乔纳森·莱弗勒,我至少有一些啤酒可以看。我没有深入研究它,而是在大多数情况下使用默认值,添加了线程,它似乎可以正常工作。现在我已经安装了Perlbrew和几个Perl,并且将系统Perl保留在5.10。我用 /usr/bin/env perl 在希邦有未来证明代码。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Jonathan Leffler    15 年前

    我能提供的最好的输出是“perl-V”,用于我的每个自制的5.1x版本的perl(有些是32位的,有些是64位的)。我省略了PowerPC构建(在我有Intel Mac之前的几天)。

    drwxr-xr-x  8 jleffler  staff       272 Aug  1  2009 v5.10.0
    drwxr-xr-x  8 jleffler  staff       272 Nov  8  2009 v5.10.1
    drwxr-xr-x  6 jleffler  staff       204 Oct 26  2009 v5.10.1-64
    drwxr-xr-x  6 jleffler  staff       204 Jun 23 09:36 v5.12.1
    drwxr-xr-x  5 jleffler  staff       170 Jun 17 21:14 v5.12.1-32bit
    drwxr-xr-x  5 jleffler  staff       170 Aug 30 15:02 v5.13.4
    

    5.10.0

    Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
      Platform:
        osname=darwin, osvers=9.7.0, archname=darwin-64int-2level
        uname='darwin osiris.sanjose.ibm.com 9.7.0 darwin kernel version 9.7.0: tue mar 31 22:52:17 pdt 2009; root:xnu-1228.12.14~1release_i386 i386 '
        config_args='-Duse64bitint'
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=define, use64bitall=undef, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
        ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
        libpth=/usr/local/lib /usr/gnu/lib /usr/GNU/lib /usr/lib
        libs=-ldbm -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_INT
                            USE_LARGE_FILES USE_PERLIO
      Built under darwin
      Compiled at Jul 14 2009 10:09:56
      @INC:
        /Users/jleffler/perl/v5.10.0/lib/5.10.0/darwin-64int-2level
        /Users/jleffler/perl/v5.10.0/lib/5.10.0
        /Users/jleffler/perl/v5.10.0/lib/site_perl/5.10.0/darwin-64int-2level
        /Users/jleffler/perl/v5.10.0/lib/site_perl/5.10.0
        .
    

    Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
    
      Platform:
        osname=darwin, osvers=9.8.0, archname=darwin-2level
        uname='darwin osiris.local 9.8.0 darwin kernel version 9.8.0: wed jul 15 16:55:01 pdt 2009; root:xnu-1228.15.4~1release_i386 i386 '
        config_args=''
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=undef, use64bitall=undef, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc -m32', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include'
        ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m32', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
        libpth=/usr/local/lib /usr/gnu/lib /usr/lib
        libs=-ldbm -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
                            USE_LARGE_FILES USE_PERLIO
      Built under darwin
      Compiled at Sep  3 2009 07:26:44
      @INC:
        /Users/jleffler/perl/v5.10.1/lib/5.10.1/darwin-2level
        /Users/jleffler/perl/v5.10.1/lib/5.10.1
        /Users/jleffler/perl/v5.10.1/lib/site_perl/5.10.1/darwin-2level
        /Users/jleffler/perl/v5.10.1/lib/site_perl/5.10.1
        .
    

    Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
    
      Platform:
        osname=darwin, osvers=9.8.0, archname=darwin-2level
        uname='darwin osiris.sanjose.ibm.com 9.8.0 darwin kernel version 9.8.0: wed jul 15 16:55:01 pdt 2009; root:xnu-1228.15.4~1release_i386 i386 '
        config_args=''
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=define, use64bitall=define, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc -m64', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include'
        ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
        intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m64', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
        libpth=/usr/local/lib /usr/gnu/lib /usr/lib
        libs=-ldbm -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
                            USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
      Built under darwin
      Compiled at Sep  3 2009 10:12:54
      @INC:
        /Users/jleffler/perl/v5.10.1-64/lib/5.10.1/darwin-2level
        /Users/jleffler/perl/v5.10.1-64/lib/5.10.1
        /Users/jleffler/perl/v5.10.1-64/lib/site_perl/5.10.1/darwin-2level
        /Users/jleffler/perl/v5.10.1-64/lib/site_perl/5.10.1
        .
    

    5.12.1 64位

    Summary of my perl5 (revision 5 version 12 subversion 1) configuration:
    
      Platform:
        osname=darwin, osvers=10.3.0, archname=darwin-2level
        uname='darwin dyn744040.sanjose.ibm.com 10.3.0 darwin kernel version 10.3.0: fri feb 26 11:58:09 pst 2010; root:xnu-1504.3.12~1release_i386 i386 '
        config_args=''
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=define, use64bitall=define, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
        ccversion='', gccversion='4.2.1 (Apple Inc. build 5659)', gccosandvers=''
        intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
        libpth=/usr/local/lib /usr/gnu/lib /usr/lib
        libs=-ldbm -ldb -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
                            USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
                            USE_PERL_ATOF
      Built under darwin
      Compiled at Jun  8 2010 15:36:47
      @INC:
        /Users/jleffler/Perl/v5.12.1/lib/perl5/site_perl/5.12.1/darwin-2level
        /Users/jleffler/Perl/v5.12.1/lib/perl5/site_perl/5.12.1
        /Users/jleffler/Perl/v5.12.1/lib/perl5/5.12.1/darwin-2level
        /Users/jleffler/Perl/v5.12.1/lib/perl5/5.12.1
        .
    

    5.12.1 32位

    Summary of my perl5 (revision 5 version 12 subversion 1) configuration:
    
      Platform:
        osname=darwin, osvers=10.4.0, archname=darwin-2level
        uname='darwin osiris-2.local 10.4.0 darwin kernel version 10.4.0: fri apr 23 18:28:53 pdt 2010; root:xnu-1504.7.4~1release_i386 i386 '
        config_args=''
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=undef, use64bitall=undef, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='cc -m32', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
        ccversion='', gccversion='4.2.1 (Apple Inc. build 5659)', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m32', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
        libpth=/usr/local/lib /usr/gnu/lib /usr/GNU/lib /usr/lib
        libs=-ldbm -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib -fstack-protector'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
                            USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
      Built under darwin
      Compiled at Jun 17 2010 20:48:50
      @INC:
        /Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/site_perl/5.12.1/darwin-2level
        /Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/site_perl/5.12.1
        /Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/5.12.1/darwin-2level
        /Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/5.12.1
        .
    

    5.13.4 64位

    Summary of my perl5 (revision 5 version 13 subversion 4) configuration:
    
      Platform:
        osname=darwin, osvers=10.4.0, archname=darwin-2level
        uname='darwin dyn9043040112.sanjose.ibm.com 10.4.0 darwin kernel version 10.4.0: fri apr 23 18:28:53 pdt 2010; root:xnu-1504.7.4~1release_i386 i386 '
        config_args=''
        hint=recommended, useposix=true, d_sigaction=define
        useithreads=undef, usemultiplicity=undef
        useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
        use64bitint=define, use64bitall=define, uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='gcc -m64', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/gnu64/include -I/usr/local/include',
        optimize='-O3',
        cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/gnu64/include -I/usr/local/include'
        ccversion='', gccversion='4.2.1 (Apple Inc. build 5664)', gccosandvers=''
        intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
        ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=8, prototype=define
      Linker and Libraries:
        ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='-fstack-protector -L/usr/gnu64/lib -L/usr/local/lib'
        libpth=/usr/gnu64/lib /usr/lib /usr/local/lib
        libs=-ldbm -ldb -ldl -lm -lutil -lc
        perllibs=-ldl -lm -lutil -lc
        libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
        gnulibc_version=''
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
        cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/gnu64/lib -L/usr/local/lib -fstack-protector'
    
    
    Characteristics of this binary (from libperl): 
      Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
                            USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
                            USE_PERL_ATOF
      Built under darwin
      Compiled at Aug 30 2010 14:36:39
      @INC:
        /Users/jleffler/perl/v5.13.4/lib/site_perl/5.13.4/darwin-2level
        /Users/jleffler/perl/v5.13.4/lib/site_perl/5.13.4
        /Users/jleffler/perl/v5.13.4/lib/5.13.4/darwin-2level
        /Users/jleffler/perl/v5.13.4/lib/5.13.4
        .