趣味はPerlのビルドなので、plenv経由でPerl5.28.1を入れようとしたところ以下のようなエラーが発生しました。
./miniperl -Ilib make_ext.pl DynaLoader.o MAKE="/Library/Developer/CommandLineTools/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=static CCCDLFLAGS= Generating a Unix-style Makefile Writing Makefile for DynaLoader "../../miniperl" "-I../../lib" DynaLoader_pm.PL DynaLoader.pm rm -f DynaLoader.xs cp dl_dlopen.xs DynaLoader.xs "../../miniperl" "-I../../lib" "../../lib/ExtUtils/xsubpp" -noprototypes -typemap '/Users/anatofuz/.plenv/build/1549952483.53003/perl-5.28.1/ext/DynaLoader/../../lib/ExtUtils/typemap' DynaLoader.xs > DynaLoader.xsc mv DynaLoader.xsc DynaLoader.c cc -c -fno-common -DPERL_DARWIN -mmacosx-version-min=10.14 -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -DPERL_USE_SAFE_PUTENV -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -O3 -DVERSION=\"1.45\" -DXS_VERSION=\"1.45\" "-I../.." -DLIBC="" DynaLoader.c rm -rf ../../DynaLoader.o cp DynaLoader.o ../../DynaLoader.o rm -f libperl.a /usr/local/bin/ar rc libperl.a op.o perl.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o DynaLoader.o cc -o perl -mmacosx-version-min=10.14 -fstack-protector-strong -L/usr/local/lib perlmain.o libperl.a `cat ext.libs` -lpthread -ldl -lm -lutil -lc ld: warning: ignoring file libperl.a, file was built for archive which is not the architecture being linked (x86_64): libperl.a Undefined symbols for architecture x86_64: "_PL_csighandlerp", referenced from: _main in perlmain.o "_PL_do_undump", referenced from: _main in perlmain.o "_PL_exit_flags", referenced from: _main in perlmain.o "_PL_perl_destruct_level", referenced from: _main in perlmain.o "_PL_sig_name", referenced from: _main in perlmain.o "_PL_sig_num", referenced from: _main in perlmain.o "_Perl_newXS", referenced from: _xs_init in perlmain.o "_Perl_rsignal", referenced from: _main in perlmain.o "_Perl_rsignal_state", referenced from: _main in perlmain.o "_Perl_sys_init3", referenced from: _main in perlmain.o "_Perl_sys_term", referenced from: _main in perlmain.o "_boot_DynaLoader", referenced from: _xs_init in perlmain.o "_perl_alloc", referenced from: _main in perlmain.o "_perl_construct", referenced from: _main in perlmain.o "_perl_destruct", referenced from: _main in perlmain.o "_perl_free", referenced from: _main in perlmain.o "_perl_parse", referenced from: _main in perlmain.o "_perl_run", referenced from: _main in perlmain.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [perl] Error 1 Installation failure: make at /Users/anatofuz/.plenv/plugins/perl-build/bin/perl-build line 10353. ABORT
plenvやperl-buildのエラーではない(ldなのでコンパイルが走った後のエラーである)事から、Perl自体の問題ではあると思っていたので、Perlのバグのページなどを見ていました。
(一応Mojave独自のエラーとしてはこれがあり、ヘッダーファイルをコピるdmgを実行することで回避出来るそうです)
ただbugsのページを確認していても、ld関連のバグ報告がなく、Perl入学式のslackで相談してみました。
僕以外のmojave環境では普通にビルドが通るらしく、これは...となっている時にこのエントリが発見されました。
見事にbinutilsをいれており、arが被り破滅していました。
ということで brew uninstall binutils
して強制的に解決。
その結果見事にperl 5.28.1がビルド出来ました!!!
Perl入学式の皆さん有難うございました!!! 流石にこれは訓練されてないと気づかない...!
完全にMojaveだと疑っていましたがおま環問題でした。Appleの皆さんすいません :bow: