xcodebuild с использованием Ld, а не Clang для связывания

#ios #xcode #react-native

#iOS #xcode #реагирующий-родной

Вопрос:

У меня странная проблема с проектом react native. Сборка проекта в XCode работает нормально, но сборка в командной строке выдает странную ошибку. В частности, этот вызов (где значения в <..> заменяются реальными значениями)

 /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace <workspace name>.xcworkspace -configuration <configuration> -scheme <schema> -sdk iphonesimulator13.6
 

Выдает эту странную ошибку при связывании приложения:

 ld: unknown option: -target
 

Похоже, это связано с тем, что этап связывания вызывается следующим образом:

 Ld /Users/<username>/Library/Developer/Xcode/DerivedData/<project derviced data directory> normal x86_64 (in target '<target>' from project '<project>')
    cd /<project direvtory>
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -target x86_64-apple-ios11.0-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk -L <list of libraries included>
 

Что кажется странным в этом шаге, так это то, что он использует ld , тогда как в журнале сборки в XCode этот шаг

 Ld /Users/alex/Library/Developer/Xcode/DerivedData/<project derived data directory> normal x86_64 (in target '<Target>' from project '<project>')
    cd /<project directory>
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios11.0-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk -L <libraries>
 

Разница в том, что XCode, похоже, связывается с использованием clang, тогда как xcodebuild связывается с использованием ld. У кого-нибудь есть идеи, почему это может происходить?

Комментарии:

1. Вы работаете в нестандартной среде сборки? У меня тоже есть эта проблема, но она возникает только тогда, когда я пытаюсь выполнить сборку с помощью диспетчера пакетов nix. Если я запускаю ту же xcodebuild команду напрямую, она работает. У меня нет дальнейшего понимания… но любопытно, связано ли это также с нестандартной средой сборки, что может привести к подсказкам! : D

2. Да, я также использую nix, но даже запуск xcodebuild за пределами a nix-shell вызывает проблемы.

3. Интересно. Два, с которыми у меня возникли проблемы, работают без проблем за пределами nix… Один строит с xcodebuild , другой с swift . В пакете swift я заметил, что arch , например --arch x86_64 --arch arm64 , если указано значение if, это вызывает проблему, но если arch не указан, он нормально строится внутри nix. Также существует проблема с песочницей, но я просто отключил песочницу, чтобы пока игнорировать это.