泉缘泉 发表于 2024-9-23 14:33:41

【最新 iOS VPN 之 WireGuard for iOS 安装构建 修复报错】

前言

在开发 WireGuard 的 iOS 版时,相信许多人都会遇到报错,在官方Github:https://github.com/WireGuard/wireguard-apple上,克隆:
   git clone https://git.zx2c4.com/wireguard-apple
步骤:
https://i-blog.csdnimg.cn/direct/565dfa0b58684234ba97863cef616409.png
然后按照官方给出的步骤执行后,再运行时发现报错。
废话少说,直接演示官方代码步骤。
作者的运行情况:


[*]Mac 系统:macOS Sonoma 14.2.1
[*]Xcode 版本:Version 15.2 (15C500b)
官方项目使用


[*]克隆完项目cd wireguard-apple后 ,这里修改Developer.xcconfig内里信息的话,发起使用
Xcode 打开来修改填写 Team ID 和 Bundle ID
https://i-blog.csdnimg.cn/direct/a4922194a7bc460a8a2dff7d93252985.png


[*] 注意这里许多人没怎么使用过 Developer.xcconfig 的话,都会保留<>括号,但这不消保留,直接填写,假如
team_id:3FJEf9Jfmf,那么:DEVELOPMENT_TEAM = 3FJEf9Jfmf,
这项目包含了 mac 端代码的,但是如果只要 iOS 端的话,这里 bundle id 只写 APP_ID_IOS 就可以

[*]继承根据官方步骤:
   brew install swiftlint go
如果本身电脑没有安装,则命令行执行;已安装跳过这步,然后直接打开项目open WireGuard.xcodeproj,真机运行(这项目只能真机运行,模仿器不可以)


[*] 运行后会发现报错:
https://i-blog.csdnimg.cn/direct/adf2ac4606744b1eb53a1167fdedd987.png
这个报错基本上都是报错 WireGuardGoBridgeiOS 这个 Targethttps://i-blog.csdnimg.cn/direct/623b919b7ec142588697c8748e8fc9c1.png
[*] 这是因为这个Target 是 External Build System,是一种构建目标类型,允许你使用非 Xcode的构建工具或脚本来构建项目。与 Xcode 内置的构建系统差异,External Build System目标让开发者可以集成和调用外部工具,如 make、CMake、SCons 等,而不是使用 Xcode 的默认编译器和构建流程
[*] 而我们这个项目是用到了目录内里的 WireGuardKitGo 里的 Makefile脚本https://i-blog.csdnimg.cn/direct/3a3902ea627d45d7ae5ee9ba26156c6e.png
https://i-blog.csdnimg.cn/direct/ea88ae66d22247e2af3b80554942bba9.png
[*] 然后回到上面的报错信息
   [ -n “” ] make: ***

Error 1 Command ExternalBuildToolExecution failed with a nonzero exit
code


[*] 这里的意思是 Makefile 内里的这个 REAL_GOROOT 里地点是空的。
https://i-blog.csdnimg.cn/direct/bb7eba9af36c423c9b4169f7aa5bc483.png
可以搜一下
       /Users/jerry/Library/Developer/Xcode/DerivedData/WireGuard-frbbjbescmfjdbfurhvpfkfivvjk/Build/Intermediates.noindex/WireGuard.build/Debug-iphoneos/wireguard-go-bridge/goroot/.prepared
    这个路径下,是否存在内里内容,你会发现根本不存在(以上路径根据本身电脑自行输入对应的路径)。
可以用命令行输出一下GOROOT 在本身电脑的位置
       go env GOROOT
    https://i-blog.csdnimg.cn/direct/e27d4f53c281434fb97aaa72914a1e36.png
打印真实GOROOT路径/opt/homebrew/Cellar/go/1.23.1/libexec
根据你本身的GOROOT 路径,然后修改一下 Makefile的 REAL_GOROOT 路径作为默认路径
REAL_GOROOT := $(shell go env GOROOT 2>/dev/null || echo "/opt/homebrew/Cellar/go/1.23.1/libexec")
如下图:
https://i-blog.csdnimg.cn/direct/55f7c4d0efe841a6b2620b1bc6705825.png
完成以上步骤,然后再编译一下,就可以通过了。
总结



[*] 基本上就是自身电脑的 GOROOT 路径问题,检察本身电脑的 GOROOT 路径,修改一下Makefile 文件就可以。如果你们按照修改了路径照旧报错,可以留言一起探究一下
[*] 下一章,我会讲解一下,如安在iOS新项目里集成 WireGuard 框架,自定义输入本身的 VPN 项目

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【最新 iOS VPN 之 WireGuard for iOS 安装构建 修复报错】