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 файл и реальная библиотека не синхронизированы. Затем вы получили предупреждение.

Я думаю, что вы можете игнорировать это предупреждение, так как ваш компилятор отступил и нашел правильную библиотеку.