#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
является частью основных сервисов, поэтому попробуйте связать с этим.