gpt4 book ai didi

macos - Mac OSX 如何确定要加载哪个 dylib?

转载 作者:行者123 更新时间:2023-12-01 03:45:18 27 4
gpt4 key购买 nike

我正在尝试使用 MacPorts 的 PHP (mod_php53.so) 在 Mac OSX Yosemite 中运行 Apache。请注意,我使用的不是 MacPorts 的 Apache,而是 Yosemite 的 Apache 和 MacPorts 的 PHP。过去,这在 OSX Mavericks 和 Mountain Lion 上运行良好。

在 Yosemite 中运行/usr/sbin/apachectl -t 时出现此错误:

httpd: Syntax error on line 228 of /private/etc/apache2/httpd.conf: Cannot load /opt/local/apache2/modules/mod_php53.so into server: dlopen(/opt/local/apache2/modules/mod_php53.so, 10): Library not loaded: /opt/local/lib/libaprutil-1.0.dylib\n Referenced from: /opt/local/apache2/modules/mod_php53.so\n Reason: Incompatible library version: mod_php53.so requires version 6.0.0 or later, but libaprutil-1.0.dylib provides version 4.0.0



事实上,/opt/local/lib/libaprutil-1.0.dylib 当前版本是 6.4.0,所以它应该可以工作。
 otool -L /opt/local/lib/libaprutil-1.0.dylib
/opt/local/lib/libaprutil-1.0.dylib:
/opt/local/lib/libaprutil-1.0.dylib (compatibility version 6.0.0, current version 6.4.0)

我猜 Apache 正在加载位于/usr/lib 中的系统 libaprutil-1.0.dylib:
otool -L /usr/lib/libaprutil-1.0.dylib 
/usr/lib/libaprutil-1.0.dylib:
/usr/lib/libaprutil-1.0.dylib (compatibility version 4.0.0, current version 4.0.0)

这很令人困惑,因为错误消息清楚地指出 MacPorts 的 libaprutil 由于版本不兼容而未加载,但我猜它正在尝试使用系统的 libaprutil 并且不知道如何强制 Apache 加载 MacPorts 的 libaprutil。

我已经尝试设置 DYLD_LIBRARY_PATH环境变量,但这并没有帮助。

有任何想法吗?

最佳答案

当环境包含 DYLD_LIBRARY_PATH=/usr/lib 时会发生这种情况。 .取消设置它应该可以工作。

在 OS X 上使用绝对路径引用库。您正确地注意到了 /opt/local/apache2/modules/mod_php53.so引用资料 /opt/local/lib/libaprutil-1.0.dylib使用它的绝对路径。然而,在 DYLD_LIBRARY_PATH 面前加载程序忽略目录组件并在 DYLD_LIBRARY_PATH 中指定的目录中搜索文件名.

您看到的错误消息具有误导性:它试图告诉您在尝试处理 /opt/local/lib/libaprutil-1.0.dylib 的代码中发生错误。 load 命令(由于 env 变量而被转移)。

另外,请注意,由于 MacPorts 是针对 MacPorts Apache 构建其 PHP,因此您的 PHP 模块不一定与系统 Apache 二进制兼容。它可能对你有用,但这只是一个巧合。

关于macos - Mac OSX 如何确定要加载哪个 dylib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490426/

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