当我想将libcurl作为依赖项添加时,我会在中添加libcurl.4.tbd,它可以工作。据我所知,这些tbd文件是存根库,可以支持动态库的链接过程,同时保持Xcode SDK下载量小(通过使用一种占位符替换实际的dylib )。
当我在Xcode中打开libcurl.4.tbd时,它会在install /usr/lib/libcurl.4.dylib下列出,并且我希望找到这个文件。但是我在这个dir上找不到实际的libcurl.4.dylib,在我的系统中任何其他地方都找不到。otool -L给了我同样的文件。
在这种情况下,链接是如何处理的,实际的dylib在哪里?我正在运行macOS 11.1
发布于 2021-01-22 10:53:07
所有内置库都包含在macOS (至少在big中)和iOS (自iPhone OS3.1之后)的一个大缓存文件中。更多信息可在iPhone Dev Wiki中获得。
若要查找计算机上缓存的实际位置,请使用DYLD_PRINT_SEGMENTS环境变量集运行已编译的可执行文件。这将在stderr上产生大量的输出,如下所示:
% DYLD_PRINT_SEGMENTS=1 ./your_executable
re-using existing shared cache (/System/Library/dyld/dyld_shared_cache_x86_64h):
0x7FFF2003B000->0x7FFF7FFBAFFF init=5, max=5 read execute
0x7FFF8003B000->0x7FFF8DFDEFFF init=3, max=3 read write data
0x7FFFC003B000->0x7FFFE22DAFFF init=1, max=1 read
dyld: Main executable mapped /Users/janten/Desktop/linky/./a.out
__PAGEZERO at 0x00000000->0x100000000
__TEXT at 0x106305000->0x106309000
__DATA_CONST at 0x106309000->0x10630D000
__DATA at 0x10630D000->0x106311000
__LINKEDIT at 0x106311000->0x106315000
dyld: Using shared cached for /usr/lib/libcurl.4.dylib
__TEXT at 0x7FFF32F8F000->0x7FFF32FF5000
__DATA at 0x7FFF89A67070->0x7FFF89A6A04C
__LINKEDIT at 0x7FFFC05FF000->0x7FFFDEF17CB0
...在本例中,缓存位于/System/Library/dyld/dyld_shared_cache_x86_64h.中。如果要查看该文件的完整内容,请查看/System/Library/dyld/dyld_shared_cache_x86_64h.map,,它包含缓存中所有库的纯文本内存映射。
https://stackoverflow.com/questions/65842584
复制相似问题