ฉันประสบปัญหาเมื่อพยายามติดตั้งโมดูลด้วย CPAN (และด้วยตนเอง make
) ฉันได้ติดตั้ง Perl ผ่าน Homebrew และเมื่อฉันเรียกใช้ cpan install MODULE_NAME
ฉันได้รับข้อผิดพลาดนี้:
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
ฉันรู้ว่าปัญหานี้เป็นเพราะรุ่น Perl ของฉันตั้งแต่รุ่น Perl ของฉันที่ตำแหน่งต่อไปนี้คือ 5.18 และไม่ใช่ 5.26 (ดู: /System/Library/Perl/5.26.1/darwin-thread-multi-2level/CORE
)
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.
แก้ไข:
มีการแสดงผลของสิ่งต่อไปนี้:
$ 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
บรรทัดแรกใน /usr/local/bin/perl
คือ: #!/usr/local/opt/perl/bin/perl
แก้ไข 2:
ดังนั้นฉันได้พบเบาะแสอื่นในการแก้ปัญหานี้ ... ฉันพยายามติดตั้ง Perl ด้วยตนเอง (แพคเกจคือ Verilog-Perl ) ในการติดตามการตั้งค่าทั่วไปเพื่อรับ Makefile
ฉันต้องวิ่ง perl Makefile.PL
ในไดเรกทอรีรากของแพ็คเกจ มองใน Makefile.PL
ฉันหา:
$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});
}
คุณจะเห็นว่า -L/System/Library/Perl...
ถูกฮาร์ดโค้ดลงใน Makefile.PL
. รุ่น Mac Perl ของฉันคือ 5.18
แต่เนื่องจากรุ่น Homebrew Perl ของฉันคือ 5.26
มันกำลังมองหา -L/System/Library/Perl/5.26/
เมื่อในความเป็นจริงสิ่งนี้อยู่ใน Homebrew Cellar ของฉัน ณ จุดนี้ฉันไม่แน่ใจว่ามีวิธีแก้ปัญหาที่สะดวก ...
type cpan
ผลลัพธ์คือ: cpan is /usr/local/bin/cpan
และทำคือ: make is /usr/bin/make
/usr/local/bin/cpan
ทำอะไร type perl
พูด? นอกจากนี้สิ่งที่เป็นค่าของ PATH
?
brew
ติดตั้ง PATH (โปรดเพิ่มสิ่งนี้ใน OQ ของคุณ)
perl
ซึ่งได้รับการดำเนินการเป็นสิ่งที่ติดตั้งโดย Homebrew สิ่งที่เป็นผลมาจากtype cpan
? เหมือนกันสำหรับmake
, ดูเหมือนกับ/usr/bin/make
ถูกนำมาใช้.