Недавно я обновил XCode до версии 8.0 (8A218a) в El Capitan (OS X 10.11 с использованием Macports 2.3.4), и с тех пор я получаю следующую ошибку ссылки, когда пытаюсь скомпилировать свой проект в Qt Creator.
/opt/local/bin/g++-mp-5 -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.8 -Wl,-rpath,/Users/zero/builds/Qt5.7.0/5.7/clang_64/lib -o uniMR.app/Contents/MacOS/uniMR ALL_OBJECT_FILES_GO_HERE.o -F/Users/zero/builds/Qt5.7.0/5.7/clang_64/lib -L/opt/local/lib -L/usr/local/lib -funit-at-a-time -fopenmp -lmlpack -larmadillo -framework CoreFoundation -DNDEBUG -lpthread -lALL_ITK_LIBS_GO_HERE -framework QtOpenGL -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework QtXml -framework OpenGL -framework AGL
**ld: unexpected token: !tapi-tbd-v2 file '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd' for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [uniMR.app/Contents/MacOS/uniMR] Error 1**
Я компилирую основной проект с помощью gcc 5.4 (не clang) внутри QtCreator (Qt 5.7), и все мои зависимые библиотеки (ITK, BOOST и т. Д.) Также компилируются с использованием gcc 5.4. Я также перекомпилировал все мои зависимые библиотеки после обновления XCode, но это тоже не помогло. Я мог найти только один пост, который связан с ошибкой, которую я вижу, но она не кажется полезной:
https://trac.macports.org/ticket/51701
Все было хорошо, прежде чем я обновил XCode. Теперь я не уверен, как решить проблему. Буду признателен за любую помощь в этом. Благодарю.
Это не похоже на проблему с любой из внешних библиотек, с которыми я связываюсь. Это то, что я сделал. Я создал новое «приложение виджетов QT» в QtCreator и решил скомпилировать с gcc5. Я получаю ту же ошибку ld: unexpected token: !tapi-tbd-v2
, Если я переключаюсь на лязг, то ошибки нет.
вчера была такая же проблема. У меня были XCode 7.3 и 8 в моей системе. Удаление 7.3 и перемещение 8 в расположение приложений решило проблему.
У меня была эта ошибка «ld: неожиданный токен:! Tapi-tbd-v2» при создании несвязанного проекта, и я смог ее решить, отредактировав файл .tbd для платформы, которая выдавала ошибку.
Для меня этот файл был:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate.tbd
Я просто удалил всю строку «—! Tapi-tbd-v2» во время сборки, а затем вернул ее обратно после завершения.
У меня такая же проблема. Я использовал macport GCC 6 в качестве компилятора и компоновщика. Кажется, GCC не понимает новый формат TBD. В пути MacOSX SDK теперь есть только эти текстовые файлы tbd, которые содержат информацию о реальных библиотеках dylib. Поэтому я просто привел ссылки на реальные библиотеки к путям SDK рядом с их файлами tbd. Тогда GCC может напрямую использовать реальные библиотеки без разбора файлов tbd.
Вот скрипт для создания этих символических ссылок:
https://gist.github.com/michalfapso/9abdbd5669bfdc4cd1a2179824d299e9
У меня была такая же проблема при компиляции с opam.
Обходной путь был PATH=/usr/bin:$PATH
таким образом gcc
разрешит по умолчанию /usr/bin/gcc
который clang
на macOS.