Estoy experimentando un problema al intentar instalar módulos con CPAN (y con el manual make
). He instalado Perl a través de Homebrew y cuando ejecuto cpan install MODULE_NAME
me sale este error:
ld: warning: directory not found for option '-
L/System/Library/Perl/5.26.1/darwin-thread-multi-2level/CORE'
ld: library not found for -lperl
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[1]: *** [../blib/arch/auto/Verilog/Parser/Parser.bundle] Error 1
make: *** [subdirs] Error 2
WSNYDER/Verilog-Perl-3.448.tar.gz
/usr/bin/make -- NOT OK
Sé que este problema se debe a mi versión de Perl, ya que mi versión de Perl en la siguiente ubicación es 5.18 y no 5.26 (consulte: /System/Library/Perl/5.26.1/darwin-thread-multi-2level/CORE
).
Cualquier ayuda sería muy apreciada.
Editar:
Se proporcionanresultados de los siguientes:
$ type cpan
cpan is /usr/local/bin/cpan
$ type make
make is /usr/bin/make
$ where brew
/usr/local/bin/brew
$ echo $PATH
/Users/alexandermann/.nvm/versions/node/v8.9.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/alexandermann/Library/Python/3.6/bin:/Users/alexandermann/Library/Android/sdk/tools:/Users/alexandermann/Library/Android/sdk/platform-tools
La primera línea en /usr/local/bin/perl
es: #!/usr/local/opt/perl/bin/perl
Edición 2:
Así que encontré otra pista para resolver esto ... Intenté instalar manualmente un paquete Perl (el paquete es Verilog-Perl ). Siguiendo la configuración típica para obtener un Makefile
, tengo que ejecutar perl Makefile.PL
en el directorio raíz del paquete. Buscando en el Makefile.PL
que encuentro:
$out .= "DLEXT = dylib\n";
if ($^V eq '5.16.2') {
$out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.16.2/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
} elsif ($^V eq '5.12.4') {
$out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.12/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
} elsif ($^V eq '5.18.2') {
$out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.18/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
} else {
$out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/%vd/%s/CORE -lperl -lgcc_eh -L/usr/local/lib\n",$^V,$Config{archname});
}
Puede ver que -L/System/Library/Perl...
está codificado en el Makefile.PL
. Mi versión de Mac Perl es 5.18
pero como mi versión de Homebrew Perl es 5.26
, está buscando -L/System/Library/Perl/5.26/
cuando en realidad esto reside en mi Homebrew Cellar. En este punto, no estoy seguro de que haya una solución conveniente ...