首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我将libcurl.4.tbd作为xcode中的依赖项添加时,实际会发生什么?

当我将libcurl.4.tbd作为xcode中的依赖项添加时,实际会发生什么?
EN

Stack Overflow用户
提问于 2021-01-22 09:34:30
回答 1查看 354关注 0票数 1

当我想将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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 10:53:07

所有内置库都包含在macOS (至少在big中)和iOS (自iPhone OS3.1之后)的一个大缓存文件中。更多信息可在iPhone Dev Wiki中获得。

若要查找计算机上缓存的实际位置,请使用DYLD_PRINT_SEGMENTS环境变量集运行已编译的可执行文件。这将在stderr上产生大量的输出,如下所示:

代码语言:javascript
复制
% 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,,它包含缓存中所有库的纯文本内存映射。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65842584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档