升级xcode15之后,出现Duplicate symbols

升级到Xcode 15后,原先Xcode14可以编译的项目出现大量Duplicate symbols,且引用报错指向同一个路径(一般为Framework)下的同一个文件。经过查找相关解决,可通过

在Xcode -> Target -> Build Setting -> Other Linker Flags 添加一行"-ld64"

即可解决该问题

原因是Xcode15采用了新的链接器(Linker),被称作“ld_prime”。新的连接器有诸多好处,尤其是对合并库的支持方面,具体可以查看WWDC 2023 SESSION 10268Meet mergeable libraries.。然而,链接器的升级可能会出现不兼容老库的情况出现。遇到这种情况,可以通过恢复旧的连接器来解决这个问题。从Other Linker Flags添加"-ld64"后,就会覆盖Xcode编译时选择的链接器,因此可以正常访问。


也可以用cocoapods 安装之后修改OTHER_LDFLAGS

 xcode_version = `xcodebuild -version`.match(/Xcode (\d+)/)[1].to_i

  target_names = ['targer_name']


  installer.pods_project.targets.each do |target|

    next unless target_names.include?(target.name)

    target.build_configurations.each do |config|

      config.build_settings['OTHER_LDFLAGS'] ||= []


      if xcode_version >= 15

          unless config.build_settings['OTHER_LDFLAGS'].include?('-ld64')

            config.build_settings['OTHER_LDFLAGS'] << '-ld64'

          end

      else

          config.build_settings['OTHER_LDFLAGS']&.delete('-ld64')

      end

    end

  end

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容