Что мне нужно для вызова CSBackupIsItemExcluded (возможно, из фреймворков или основных служб) в macOS Big Sur?

#c #linker-errors #macos-big-sur

Вопрос:

До сегодняшнего обновления до Big Sur я смог (в Mojave) скомпилировать/связать программу командной строки на языке Си, которая вызывает CSBackupIsItemExcluded и cfurlcreatefromfilesystemпредставление.

Я достиг этого (на Мохаве), связав:

 cc cbget.o 
     /System/Library/Frameworks/Carbon.framework/Carbon 
     /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
   -o cbget
 

Я помню, что мне потребовалось несколько дней, чтобы выяснить это (и найти/загрузить файлы).
год или два назад, а теперь я не могу вспомнить, что я делал 🙁
(Да, на этот раз я делаю заметки получше!)

Если я попробую сделать это выше, это не удастся…эти файлы/каталоги не существуют в Биг-Суре.

Если я опущу их, связь не удастся (ожидаемо) с:

Неопределенные символы для архитектуры x86_64: «_cfurlcreatefromfilesystemпредставление», на которое ссылается: _handle_file в cbget-b22970.o «_CSBackupIsItemExcluded», на которое ссылается: _handle_file в cbget-b22970.o

Я не могу полагаться на XCode, чтобы волшебным образом что-то найти … Я компилирую/связываю из командной строки.

Я знаю, что CSBackupIsItemExcluded все еще находится в операционной системе … потому что версия программы, скомпилированной/связанной в Mojave, которая ее использует, работает просто отлично (и позволяет мне переключать «не создавать резервные копии» для файлов из командной строки).

Кстати, переехав из Мохаве в Биг-Сур, я был удивлен, обнаружив, что «/usr/include» исчез, и что поставляемый Apple «cc» волшебным образом знает, что нужно посмотреть: /Приложения/Xcode.app/Содержимое/Разработчик/Цепочки инструментов/XcodeDefault.xctoolchain/usr/include/c /v1 для таких вещей, как «#include <stdint.h>»

спасибо за любые указания! Стэн

Ответ №1:

Я могу поверить, что углеродная структура, возможно, исчезла (Apple давно устарела), но не CoreFoundation. CoreFoundation-это одна из первых вещей, загружаемых при загрузке, и от нее зависит многое другое.

Сказав это, однако, если вам действительно нужен углерод (и он все еще существует), я думаю, вы хотите связать его с:

/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon

скорее, чем:

/System/Library/Frameworks/Carbon.framework/Carbon


CFURLCreateFromFileSystemRepresentation является частью основного фонда.

CSBackupIsItemExcluded является частью основных сервисов, поэтому попробуйте связать с этим.