【问题标题】:Linker error when building extension "no such file or directory: '_NSExtensionMain'"构建扩展时的链接器错误“没有这样的文件或目录:'_NSExtensionMain'”
【发布时间】:2020-07-30 08:48:12
【问题描述】:

我继承了一个较旧的项目,该项目有很多依赖项,在通过 CI 构建可靠的构建时遇到了一些问题。经过仔细检查,master 分支完全被破坏了,我需要进行一些修复。除了扩展之外,我可以让它很快工作。删除扩展时,项目将构建并运行。还有一个 dev 分支仍然可以开箱即用,但已经过时了。我比较了这些差异,似乎可以归结为链接器的细微变化。一旦我从master 分支上的dev 分支复制了工作链接器命令,它就会通过,反之亦然。

区别

比这两行有更多的差异,但我尝试将它们全部换掉,结果没有任何差异。

工作版本(开发分支)

 -Xlinker 2 -fobjc-arc -fobjc-link-runtime -fapplication-extension -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -L/usr/lib/swift
 -Xlinker -add_ast_path
 -Xlinker /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Intermediates.noindex/[App].build/Debug-iphonesimulator/[App]-PrintAction.build/Objects-normal/x86_64/[App]_PrintAction.swiftmodule -e _NSExtensionMain

失败的版本(主分支)

 -Xlinker 2 -fobjc-arc -fobjc-link-runtime -fapplication-extension -B -e _NSExtensionMain

问题

我不知道为什么这两行不同,或者master 版本中似乎缺少一部分的原因是什么。我找不到标志的差异,但我可能找错地方了。

完整版

漂亮的格式:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
     -target x86_64-apple-ios12.1-simulator <-- Beide
     -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.6.sdk 
     -L/Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Products/Debug-iphonesimulator 
     -F/Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Products/Debug-iphonesimulator 
     -filelist /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Intermediates.noindex/[App].build/Debug-iphonesimulator/[App]-PrintAction.build/Objects-normal/x86_64/[App]-PrintAction.LinkFileList 
     -Xlinker -rpath 
     -Xlinker @executable_path/Frameworks 
     -Xlinker -rpath 
     -Xlinker @executable_path/../../Frameworks -dead_strip 
     -Xlinker -object_path_lto 
     -Xlinker /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Intermediates.noindex/[App].build/Debug-iphonesimulator/[App]-PrintAction.build/Objects-normal/x86_64/[App]-PrintAction_lto.o 
     -Xlinker -export_dynamic 
     -Xlinker -no_deduplicate 
     -Xlinker -objc_abi_version 
     -Xlinker 2 
     -fobjc-arc 
     -fobjc-link-runtime 
     -fapplication-extension 
     -B 
     -e _NSExtensionMain
     -Xlinker -sectcreate 
     -Xlinker __TEXT 
     -Xlinker __entitlements 
     -Xlinker /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Intermediates.noindex/[App].build/Debug-iphonesimulator/[App]-PrintAction.build/[App]-PrintAction.appex-Simulated.xcent 
     -framework SystemConfiguration 
     -framework MobileCoreServices 
     -framework [App]Core 
     -lPods-[App]-PrintAction 
     -Xlinker -dependency_info 
     -Xlinker /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Intermediates.noindex/[App].build/Debug-iphonesimulator/[App]-PrintAction.build/Objects-normal/x86_64/[App]-PrintAction_dependency_info.dat 
     -o /Users/[me]/Library/Developer/Xcode/DerivedData/[App]-cjrxbriquvbkmcgdurzwekbylpik/Build/Products/Debug-iphonesimulator/[App]-PrintAction.appex/[App]-PrintAction

【问题讨论】:

    标签: ios objective-c swift xcode clang


    【解决方案1】:

    -B 标志是罪魁祸首,它被添加到构建设置的某处,原因不明。我认为“没有这样的文件或目录”错误通常是由某种外部标志引起的,它使链接器认为您提供的是文件参数而不是某种标志的值部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 2020-04-05
      • 2017-12-15
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多