4

.so当缺少必要的文件时,我应该如何在 OpenBSD 上构建 XS perl 模块?

背景:在香草 OpenBSD 5.3 vm 安装中,我无法构建需要链接到-lpthread. pthread.a 和 pthread.so.Maj.Min确实存在于系统中。

但是 Makefile.PL 正在寻找pthread.so,这是不存在的。这对于 OpenBSD 来说很普通吗?(我可以强制 Makefile 链接到 pthread.a 并且事情工作得很好,因为它发生了。)

在 Redhat-ish Linux 环境中,我只需安装正确的-develRPM 并再次运行。然而,在 OpenBSD 上,我缺少一些关于开发环境的非常基本的东西。

更新核心问题是 Dynaloader 错误检测 Makefile.PL 中的库。

4

2 回答 2

0

Makefile 错误,向上游报告错误。它永远不应该寻找特定的文件。看这个例子:

$ 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 包含电池。

于 2013-05-22T18:12:03.307 回答
0

虽然编辑 Makefile.PL 是一种方法,但我通常看到人们使用链接文件将通用库/可执行文件名称指向特定于版本的名称。

For Example:
    pthread.so -> pthread.so.maj.min
    pthread.so.maj -> pthread.so.maj.min

这样,想要“最新”版本的东西可以通过链接获得它,并认为只关心主要版本可以获取其主要版本的最新版本......

于 2013-05-22T15:51:41.423 回答