在OpenBSD上构建perl扩展模块

在OpenBSD上构建perl扩展模块,perl,openbsd,perl-xs,Perl,Openbsd,Perl Xs,当必需的文件丢失时,我应该如何在OpenBSD上构建XSPerl模块 背景:在一个普通的OpenBSD5.3VM安装上,我无法构建需要链接到-lpthread的perl模块。系统上确实存在pthread.a和pthread.so.Maj.Min 但是Makefile.PL正在寻找pthread.so,而这是不存在的。这对于OpenBSD来说是普通的吗?(我可以强制Makefile链接到pthread.a,事情就这样顺利进行了。) 在Redhat-ish Linux环境中,我只需安装正确的-dev

当必需的
文件丢失时,我应该如何在OpenBSD上构建XSPerl模块

背景:在一个普通的OpenBSD5.3VM安装上,我无法构建需要链接到
-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.PL是一种方法,我通常看到人们使用链接文件将通用库/可执行文件名指向特定于版本的名称

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

通过这种方式,想要“最新”版本的东西可以通过链接获得它&认为只关心主要版本就可以获取其主要版本的最新版本…

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附带了电池。

没错,但这并不是此类产品的标准做法。如何根据pthread动态编译用户程序-每次手动生成正确的符号链接?这似乎不正确,对我来说也不正确。我通常看到它是由发行版供应商/包作者/Makefile完成的。不能说这是不是一个好主意,只是报告我所看到的;还有一些地方出了问题——Dynaloader魔法检测到库被破坏了。够近了。