gpt4 book ai didi

perl - 静态链接 DBD::Pg(针对 libpq.so)但针对 Perl 动态链接?

转载 作者:行者123 更新时间:2023-11-29 12:00:43 24 4
gpt4 key购买 nike

我正在尝试通过 Makefile.PL 在 Linux 主机上构建 DBD::Pg;我的要求是我必须能够动态链接到 perl,但静态链接到 libpq.so(因为它可能不是在所有机器上都可用)。

有没有简单的方法来做到这一点?我尝试更改 Makefile.PL 的 LIBS 指令中的链接选项,但 MakeMaker 忽略了我的选项。

最佳答案

IMO,您错误地指定了您的要求。

您不需要静态链接到 libpq 只是因为它可能不是在所有系统上都可用。

您通常应该做的是动态链接到 libq 并在包装脚本中设置 LD_LIBRARY_PATH 或使用 rpath 链接以便可以找到 libpq

请注意,无论是静态链接还是动态链接,如果某个其他模块将 libpq 加载到同一个 Perl 中,您将得到两个不兼容的 libpq 链接到相同的可执行文件(boom)或使用 libpq 的模块之一,而不是针对它编译的模块(也是 boom)。如果您使用 rpath 链接,ld.so 对链接范围的了解可能会让您摆脱它,但设置 LD_LIBRARY_PATH 几乎肯定会导致问题。

您可能想研究将 rpath$ORIGIN 一起使用。

关于perl - 静态链接 DBD::Pg(针对 libpq.so)但针对 Perl 动态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com