created: 2021-02-18T05:29:16.000Z

perl の XS.c: loadable library and perl binaries are mismatched

開発環境を docker-compose でやっていて、perlのバージョンをあげた時に発生。

XS.c: loadable library and perl binaries are mismatched (got handshake key 0xc180000, needed 0xe180000) exited with code 1

書いてある通り、perlのバージョンと入れているライブラリのバージョンが合わないので発生している。

依存ライブラリは carton で管理しているが、carton は perl 自体のバージョンには感知しないので carton install しても carton は「すでにご指定のライブラリは入ってますよ」と言い、perl は「入ってるライブラリ(のビルド成果物)はうちのバージョンと違いますよ」となっている

docker-compose で volume を共有しているディレクトリを消して、再度入れ直したら動くようになる。

$ rm -rf ./docker/app/local/*
$ docker build . 

参考

縁の下のUIデザイン──小さな工夫で大きな効果をもたらす実践TIPS&テクニック (WEB+DB PRESS plus)
[ad] 縁の下のUIデザイン──小さな工夫で大きな効果をもたらす実践TIPS&テクニック (WEB+DB PRESS plus)
池田 拓司 (単行本(ソフトカバー))