Zac*_*c B 11 python macos linker dyld
在 MacOS 上,我有一组python我无法控制的二进制文件(即我无法使用 来构建它们LDFLAGS='-undefined error')。
在某些 MacOS 主机/体系结构(即某些 ARM Mac,但不是全部;某些 x86 Mac,但不是全部)上,在 Python 中执行某些操作会失败,并显示dyld[some_pid]: missing symbol called.
如何找出导致问题的库文件以及丢失的符号(按名称)?
使用以下环境显示dyld的诊断输出:
DYLD_PRINT_LIBRARIES=1
DYLD_PRINT_APIS=1
DYLD_PRINT_WARNINGS=1
Run Code Online (Sandbox Code Playgroud)
这会导致失败的操作在崩溃之前发出看似成功的操作。 dyld但诊断输出还不够;例如,它通常看起来像这样:
dyld[91757]: dyld_image_path_containing_address(0x10a7ab000) => '/path/to/python/lib/lib.macosx-10.15-x86_64-3.7/_csv.cpython-37m-darwin.so'
dyld[91757]: _dyld_is_memory_immutable(0x10a7ab000, 28) => 0
dyld[91757]: dlopen(_csv.cpython-37m-darwin.so) => 0x210fbb0c0
dyld[91757]: dlsym(0x210fbb0c0, "PyInit__csv")
dyld[91757]: dlsym("PyInit__csv") => 0x10a7abbc0
dyld[91757]: missing symbol called
Run Code Online (Sandbox Code Playgroud)
在该示例中,nm报告_csv.cpython-37m-darwin.so可以解析名为 的符号PyInit__csv。所以看起来(我认为)错误missing symbol called在不同的符号上失败了,但我不知道如何确定是哪一个。
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |