使用最新的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,一切都很好。
1条答案
按热度按时间yyhrrdl81#
在进一步分析这个问题后,我在互联网上发现了一篇有趣的文章:https://github.com/golang/go/issues/61229似乎这个错误与Xcode 15 beta的新链接器有关。上面提到的文章已经解释了一个修复/解决方案,我很快就想解释我是如何修补我的系统的。
GoLang提供了一个修复程序,目前仍在分支上隔离。这我们需要下载到我们的系统,建立去新鲜和参考补丁的版本。
1.在Mac系统上创建新目录
1.使用
git init
初始化git1.从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设备编译我的项目。