There's no .dylib specified in .tbd file

Viewed 24

I created new Objective-C application project, and Added new target of Endpoint-Security to that project. and Xcode automatically included libEndpointSecurity.tbd to my project. I checked it out, and i found 'install-name' field. I think that is the link to the actual .dylib file stored in my Mac. But i cannot find 'libEndpointSecurity.dylib' in /usr/lib directory.

here is the content of .tbd file.

--- !tapi-tbd
tbd-version:     4
targets:         [ x86_64-macos, arm64-macos, arm64e-macos ]
uuids:
  - target:          x86_64-macos
    value:           D51DD65F-84EA-3A89-A421-E37A87508A3F
  - target:          arm64-macos
    value:           00000000-0000-0000-0000-000000000000
  - target:          arm64e-macos
    value:           B5561C54-DC5C-3A6E-91B9-92079B3E6F05
install-name:    '/usr/lib/libEndpointSecurity.dylib'
current-version: 271.100.29
exports:
  - targets:         [ arm64e-macos, x86_64-macos, arm64-macos ]
    symbols:         [ _es_authorize_file_provider_materialize, _es_authorize_file_provider_materialize_unsafe, 
                       _es_authorize_file_provider_update, _es_clear_cache, _es_copy_message, 
                       _es_delete_client, _es_exec_arg, _es_exec_arg_count, _es_exec_env, 
                       _es_exec_env_count, _es_exec_fd, _es_exec_fd_count, _es_free_message, 
                       _es_invert_path_match, _es_message_size, _es_mute_path, _es_mute_path_events, 
                       _es_mute_path_literal, _es_mute_path_prefix, _es_mute_process, 
                       _es_mute_process_events, _es_muted_paths_events, _es_muted_processes, 
                       _es_muted_processes_events, _es_new_client, _es_new_client_with_config, 
                       _es_register_early_boot_client, _es_release_message, _es_release_muted_paths, 
                       _es_release_muted_processes, _es_respond_auth_result, _es_respond_flags_result, 
                       _es_retain_message, _es_subscribe, _es_subscriptions, _es_sync_client, 
                       _es_unmute_all_paths, _es_unmute_path, _es_unmute_path_events, 
                       _es_unmute_process, _es_unmute_process_events, _es_unregister_early_boot_client, 
                       _es_unregister_early_boot_clients, _es_unsubscribe, _es_unsubscribe_all, 
                       _sysdiagnoseInformationForEndpointSecurity ]
...

I think it is a problem... but build success with no errors, Application runs properly. Am i misunderstanding the role of 'install-name' field? If so, what's role of it? And why there's no '/usr/lib/libEndpointSecurity.dylib' in my mac?

1 Answers

And why there's no '/usr/lib/libEndpointSecurity.dylib' in my mac?

It's in the dyld_shared_cache. Massive multi-gigabyte files /System/Library/dyld that contain all stock libraries and frameworks. iOS has made this shift a decade ago, and while macOS has had these caches for about the same amount of time, it was only macOS 11 that finally removed the standalone dylibs from the file system.

Related