Go语言 WireGuard-苹果Xcode 15(beta)的构建问题

6qqygrtg  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(513)

使用最新的Xcode 15 Beta版本构建我的Wireguard-Apple项目会导致一些构建问题。看起来问题出现在构建目标WireguardNetworkExtensionsmasOs时(目标WireguardNetworkExtensionsiOS也是如此)。使用相同的代码库并使用Xcode 14构建,一切看起来都很好。
我从https://git.zx2c4.com/wireguard-apple下载了参考实现,也出现了同样的问题。

ld: warning: '/Users/daniel/Library/Developer/Xcode/DerivedData/WireGuard-eummroygnzwynwfxhjfgjmamxkof/Build/Products/Debug/libwg-go.a[arm64][2](go.o)' has malformed LC_DYSYMTAB, expected 72 undefined symbols to start at index 4928, found 81 undefined symbols starting at index 15
ld: initializer pointer must point to start of function (no addend) in '/Users/daniel/Library/Developer/Xcode/DerivedData/WireGuard-eummroygnzwynwfxhjfgjmamxkof/Build/Products/Debug/libwg-go.a[arm64][2](go.o)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

不知何故,问题一定是与email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)和最新的Xcode 15测试版。
我尝试使用WireGuard_Apple参考实现(https://git.zx2c4.com/wireguard-apple)来排除应用程序中的错误。

  • 使用Xcode 15 beta,问题就出现了。无法构建。
  • 切换回Xcode 14,一切都很好。
yyhrrdl8

yyhrrdl81#

在进一步分析这个问题后,我在互联网上发现了一篇有趣的文章:https://github.com/golang/go/issues/61229似乎这个错误与Xcode 15 beta的新链接器有关。上面提到的文章已经解释了一个修复/解决方案,我很快就想解释我是如何修补我的系统的。
GoLang提供了一个修复程序,目前仍在分支上隔离。这我们需要下载到我们的系统,建立去新鲜和参考补丁的版本。
1.在Mac系统上创建新目录
1.使用git init初始化git
1.从GoLang git clone https://go.googlesource.com/go refs/changes/15/505415/11下载特殊补丁分支
1.切换到源文件夹cd ./refs/changes/15/505415/11/src
1.构建新的Go ./make.bash
一段时间后,您将在文件夹中找到新的Go二进制文件。最后,我们只需要在Xcode项目中引用新构建的二进制文件。转到你的Xcode项目并添加一个用户定义的构建设置。将其命名为PATH并添加此值${PATH}:<your new Go directory>/bin
在尝试之前清理“生成文件夹”。对我来说,它起作用了,我能够用Xcode 15 Beta 5为iOS 17 beta设备编译我的项目。

相关问题