登录
首页 >  Golang >  Go问答

Xcode 15(测试版)中 WireGuard-apple 构建的挑战

来源:stackoverflow

时间:2024-02-06 17:30:24 195浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Xcode 15(测试版)中 WireGuard-apple 构建的挑战》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

使用最新的 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] 和最新的 xcode 15 beta 版本上。

我尝试使用 wireguard_apple 参考实现 (https://git.zx2c4.com/wireguard-apple) 从我的应用程序中排除错误。

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

正确答案


进一步分析这个问题后,我在网上发现了一篇有趣的文章:https://github.com/golang/go/issues/61229 看来这个错误与 Xcode 15 beta 的新链接器有关。提到的文章已经解释了一个修复/解决方法,我很快想解释一下我如何修补我的系统。

GoLang 提供了一个修复程序,目前该修复程序仍隔离在分支上。我们需要将其下载到我们的系统中,重新构建并引用修补版本。

  1. 在 Mac 系统上创建一个新目录
  2. 使用 git init 初始化 git
  3. 从 GoLang git 克隆 https://go.googlesource.com/go refs/changes/15/505415/11 下载特殊补丁分支
  4. 更改为源文件夹 cd ./refs/changes/15/505415/11/src
  5. 构建新的 Go ./make.bash

稍后,您将在文件夹中找到新的 Go 二进制文件。最后,我们只需要在 Xcode 项目上引用新构建的二进制文件。转到您的 Xcode 项目并添加用户定义的构建设置。将其命名为 PATH 并添加此值 ${PATH}:/bin

在尝试之前先清理构建文件夹。对我来说它有效,我能够使用适用于 iOS 17 Beta 设备的 Xcode 15 Beta 5 编译我的项目。

以上就是《Xcode 15(测试版)中 WireGuard-apple 构建的挑战》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>