当必需的 .so
文件丢失时,我应该如何在 OpenBSD 上构建 XS perl 模块?
背景:在 vanilla OpenBSD 5.3 vm 安装中,我无法构建需要链接到 -lpthread
的 perl 模块。 pthread.a 和 pthread.so.Maj.Min 确实存在于系统中。
然而 Makefile.PL 正在寻找 pthread.so
,它不存在。这对于 OpenBSD 来说很普通吗? (我可以强制 Makefile 链接到 pthread.a 并且一切正常,就像它发生的那样。)
在 Redhat-ish Linux 环境中,我只需安装正确的 -devel
RPM 并再次运行。然而,在 OpenBSD 上,我缺少关于开发环境的一些非常基本的东西。
更新 核心问题是 Dynaloader 错误检测 Makefile.PL 中的库。
最佳答案
Makefile错误,向上游报告bug。它永远不应该寻找特定的文件。看这个例子:
$ cat test.c
int main(){
return 0;
}
$ gcc -lpthread -o test test.c
$ ldd test
test:
Start End Type Open Ref GrpRef Name
00000c4321600000 00000c4321a02000 exe 1 0 0 test
00000c4521f63000 00000c4522374000 rlib 0 2 0 /usr/lib/libpthread.so.17.1
00000c4524c1c000 00000c4525103000 rlib 0 1 0 /usr/lib/libc.so.68.2
00000c452a100000 00000c452a100000 rtld 0 1 0 /usr/libexec/ld.so
此外,在 OpenBSD 中,您不需要安装
-devel
包。 OpenBSD 包含电池。