ld: warning: текстовый файл-заглушка не синхронизирован. Переход к файлу библиотеки для связывания
Когда я пытаюсь sourceCpp
, он дает предупреждение:
ld: warning: текстовый файл-заглушка /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd и файл библиотеки /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation не синхронизированы. Возвращение к файлу библиотеки для связывания.
Но функция действительно работает. Просто интересно, как решить это предупреждение.
Ответы
Ответ 1
У меня была эта проблема при компиляции кода Go на моем Mac тоже.
Файлы tld были не синхронизированы в /System/Library/Frameworks/
.
Решение:
Просто свяжите последние фреймворки из MacOSX.sdk с /Library/Frameworks/
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreFoundation.framework /Library/Frameworks/CoreFoundation.framework
Ответ 2
Используя MacOS Mojave 10.14.2, я решил использовать решение из этого комментария на GitHub:
export SDKROOT=macosx10.14
Поместите строку выше в свой ~/.bash_profile
. Замените 10.14
вашей конкретной версией инструментов MacOSX Xcode. Узнайте, какая у вас версия:
xcrun --show-sdk-path
Он напечатает что-то вроде:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
Просто возьмите последнее слово, сделайте так, чтобы оно было в нижнем регистре, и замените его в команде export
выше.
Обновление сентябрь 2019 г.
В последнем выпуске они удалили номер версии из SDK. Просто возьмите полный путь и экспортируйте его как SDKROOT
, например так:
export SDKROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
Ответ 3
Изменить: это, похоже, прекратило работу 10.13.16. Попытка не повредит ваш Mac после переустановки, но я не уверен, как это исправить.
В последнее время просто удалите инструменты командной строки для mac и переустановите.
$ rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
После этих шагов вы увидите поп, чтобы установить новую версию этих инструментов.
Ответ 4
Переустановка может помочь, но также может и не быть.
Это ошибка Apple, и им нужно исправить это с помощью другого обновления инструментов командной строки.
На данный момент просто игнорируйте предупреждение.
(См. Группу других людей, испытывающих эту проблему: https://github.com/vim/vim/issues/3445 и здесь: https://github.com/golang/go/issues/26073)
Ответ 5
Я думаю, что это не имеет никакого отношения к Rcpp.
Это связано с вашей системой.
Я показываю первые строки одного tbd файла ниже. Это всего лишь текстовый файл. Вы можете открыть его с помощью текстового редактора.
--- !tapi-tbd-v3
archs: [ i386, x86_64, x86_64h ]
uuids: [ 'i386: 17321B27-67AB-3D26-B9DF-A69624B1C82B', 'x86_64: 358C547D-E227-3228-8218-62327F4605C8',
'x86_64h: 945E5C0A-86C5-336E-A64F-5BF06E78985A' ]
platform: macosx
install-name: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
current-version: 1452.23
compatibility-version: 150
exports:
- archs: [ i386 ]
symbols: [ '$ld$add$os10.5$.objc_class_name_NSObject', '$ld$add$os10.6$.objc_class_name_NSObject',
'$ld$add$os10.7$.objc_class_name_NSObject', '$ld$hide$os10.4$.objc_class_name_NSArray',
'$ld$hide$os10.4$.objc_class_name_NSCalendar', '$ld$hide$os10.4$.objc_class_name_NSData',
...
Насколько я понимаю, файл tbd содержит версию и расположение файла реальной библиотеки. Это похоже на "ссылку". (Только мое личное понимание. Пожалуйста, поправьте меня, если это не так.)
После обновления Xcode ваш tbd файл и реальная библиотека не синхронизированы. Затем вы получили предупреждение.
Я думаю, что вы можете игнорировать это предупреждение, так как ваш компилятор отступил и нашел правильную библиотеку.