运行perl -MExtUtils::Embed -e ldopts
结果输出不可用:
-Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.34/CORE -lperl -ldl -lm -lpthread -lc -lcrypt
事实上不 libperl.so
系统中的任何位置。但是,在 中有/usr/lib/x86_64-linux-gnu/libperl.so.5.34
和。不仅上面的输出中缺少此目录,而且作为符号链接,或/usr/lib/x86_64-linux-gnu/libperl.so.5.34.0
/usr/lib/x86_64-linux-gnu
libperl.so
libperl.so.5.34
libperl.so.5.34.0
还丢失的。
-e ccopts
请注意,Makefile 通常使用和的输出-e ldopts
来根据环境正确设置参数,而不是对其进行硬编码。现在,由于 ExtUtils::Embed 模块损坏,可靠且可移植的构建已不可能实现。(想想,例如 dockerized 应用程序)。
这件事怎么会变得这么糟糕?如何解决?
编辑/更新:正如评论中所建议的,该libperl-dev
包是已安装。(apt-get
这么说)。
更新2:最简单的修复方法可能在软件包中,它也libperl-dev
可以安装libperl.so
符号链接在库的原始位置( ?)。然后不需要更改,因为它的输出会起作用,从而也保留了 Makefile 中的动态设置。/usr/local/lib
Embed.pm