在OpenBSD上构建一个perl扩展模块

时间:2013-05-22 14:00:00

标签: perl openbsd perl-xs

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

背景:在一个普通的OpenBSD 5.3 vm安装中,我无法构建一个需要链接-lpthread的perl模块。 pthread.a和pthread.so.Maj.Min do 存在于系统中。

然而,Makefile.PL正在寻找没有的pthread.so。对于OpenBSD来说这是普通的吗? (我可以强制Makefile链接到pthread.a,事情就好了,就好了。)

在Redhat-ish Linux环境中,我只需安装正确的-devel RPM并重新启动。但是,在OpenBSD上,我遗漏了一些关于开发环境的基本知识。

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

2 个答案:

答案 0 :(得分:0)

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

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

这样,想要“最新”版本的东西可以通过链接&认为只关心主要版本可以抓住它最新版本的主要版本......

答案 1 :(得分: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包含电池。