流水账:

[ -n "/usr/local/Cellar/go/1.16.3/libexec" ]

mkdir -p "/Users/zhh/Desktop/Build/Intermediates.noindex/WireGuard.build/Debug/wireguard-go-bridge/goroot"

rsync -a --delete --exclude=pkg/obj/go-build "/usr/local/Cellar/go/1.16.3/libexec/" "/Users/zhh/Desktop/Build/Intermediates.noindex/WireGuard.build/Debug/wireguard-go-bridge/goroot/"

cat goruntime-*.diff | patch -p1 -f -N -r- -d "/Users/zhh/Desktop/Build/Intermediates.noindex/WireGuard.build/Debug/wireguard-go-bridge/goroot"

patching file src/runtime/sys_darwin.go

Hunk #1 FAILED at 469.

1 out of 1 hunk FAILED -- saving rejects to file -

patching file src/runtime/sys_darwin_amd64.s

Hunk #1 succeeded at 114 (offset 5 lines).

patching file src/runtime/sys_darwin_arm64.s

Hunk #1 succeeded at 143 (offset 8 lines).

make: *** [/Users/zhh/Desktop/Build/Intermediates.noindex/WireGuard.build/Debug/wireguard-go-bridge/goroot/.prepared] Error 1

Command ExternalBuildToolExecution failed with a nonzero exit code

这个问题的原因是 go的环境配置不对造成的。

修改makefile文件,强制设置REAL_GOROOT,BUILD_GOROOT

REAL_GOROOT := /usr/local/Cellar/go/1.16.3/libexec
BUILD_GOROOT := $(BUILDDIR)/goroot
GOBIN := $(REAL_GOROOT)/bin/go

$(warning $(REAL_GOROOT))
$(warning $(BUILD_GOROOT))

export GOROOT := $(BUILDDIR)/goroot
$(BUILD_GOROOT)/.prepared:
    [ -n "$(REAL_GOROOT)" ]
    mkdir -p "$(BUILD_GOROOT)"
    rsync -a --delete --exclude=pkg/obj/go-build "$(REAL_GOROOT)/" "$(BUILD_GOROOT)/"
    touch "$@"

define libwg-go-a
$(BUILDDIR)/libwg-go-$(1).a: export CGO_ENABLED := 1
$(BUILDDIR)/libwg-go-$(1).a: export CGO_CFLAGS := $(CFLAGS_PREFIX) $(ARCH)
$(BUILDDIR)/libwg-go-$(1).a: export CGO_LDFLAGS := $(CFLAGS_PREFIX) $(ARCH)
$(BUILDDIR)/libwg-go-$(1).a: export GOOS := darwin
$(BUILDDIR)/libwg-go-$(1).a: export GOARCH := $(GOARCH_$(1))
$(BUILDDIR)/libwg-go-$(1).a: $(BUILD_GOROOT)/.prepared go.mod
    $(GOBIN) build -tags ios -ldflags=-w -trimpath -v -o "$(BUILDDIR)/libwg-go-$(1).a" -buildmode c-archive
    rm -f "$(BUILDDIR)/libwg-go-$(1).h"
endef
$(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH))))

$(DESTDIR)/wireguard-go-version.h: $(BUILD_GOROOT)/.prepared go.mod
    $(GOBIN) list -m golang.zx2c4.com/wireguard | sed -n 's/.*v\([0-9.]*\).*/#define WIREGUARD_GO_VERSION "\1"/p' > "$@"

$(DESTDIR)/libwg-go.a: $(foreach ARCH,$(ARCHS),$(BUILDDIR)/libwg-go-$(ARCH).a)
    @mkdir -vp "$(DESTDIR)"
    $(LIPO) -create -output "$@" $^

在终端是设置环境变量

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

或者

$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn

或者

$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile

Windows

打开你的 PowerShell 并执行

C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"

或者

1. 打开“开始”并搜索“env”
2. 选择“编辑系统环境变量”
3. 点击“环境变量…”按钮
4. 在“<你的用户名> 的用户变量”章节下(上半部分)
5. 点击“新建…”按钮
6. 选择“变量名”输入框并输入“GO111MODULE”
7. 选择“变量值”输入框并输入“on”
8. 点击“确定”按钮
9. 点击“新建…”按钮
10. 选择“变量名”输入框并输入“GOPROXY”
11. 选择“变量值”输入框并输入“https://goproxy.cn”
12. 点击“确定”按钮

如果下面的报错

2021-04-12 18:15:29.129793-0700 WireGuard[2426:22357] Unable to add config to keychain: -60005
2021-04-12 18:15:29.134784-0700 WireGuard[2426:22357] Add: Saving configuration failed: Error Domain=NEVPNErrorDomain Code=1 "Missing protocol or protocol has invalid type" UserInfo={NSLocalizedDescription=Missing protocol or protocol has invalid type}

这个问题的原因是你run的target是iOS的, 在macOS上是无法运行iOS的app的, 把启动的target改为for macOS的即可。

wireguard官方swift代码编译错误的解决办法相关推荐

  1. Impala编译错误及解决办法汇总

    Impala编译错误及解决办法汇总 Impala repo里有C++.Java.Python.Bash的代码,编译过程中可能遇到各种问题.这个文章将作为一个汇总,以后每遇到一个编译问题,解决完后都会更 ...

  2. android.mk 编译32位_C/C++初学者常见编译错误及其解决办法

    用户在C/C++集成开发环境(例如 Dev-C++)中编辑了源代码,执行编译之后,常常会因为源代码中存在问题而出现编译错误(它们会显示在编译窗口中).初学者常常会面对这些错误而不知如何处理.本文下面列 ...

  3. ffmpeg库编译加文字_使用ffmpeg库编译错误及解决办法

    一.FFmpeg源代码下载与编译 # wget http://www.ffmpeg.org/releases/ffmpeg-0.5.13.tar.bz2 # tar -jxvf ffmpeg-0.5. ...

  4. PHP安装编译错误及解决办法

    今天搭建LAMP环境是编译PHP时出现的错误汇总. 错误: configure: error: xml2-config not found. Please check your libxml2 ins ...

  5. php 编译错误,PHP 编译错误及解决办法

    ./configure的时候出现如下错误: configure: error: xslt-confignot found. Please reinstall the libxslt >= 1.1 ...

  6. 有关编译嵌入式android的swap空间不够导致的编译错误和解决办法

    由于android包括了java的很大一部分组成,而嵌入式开发,编译往往需要考虑内存的多少,而且,很多时候,连开发工具本身也是虚拟机,这就造成编译出现很多问题. 系统; vmware(ubuntu14 ...

  7. Error:java: 无效的标记 -version 编译错误的解决办法

    创建新项目,在启动的时候遇到了 Error:java: 无效的标记: -version 这个报错信息 截图如下: 说是在编译的时候遇到了问题,所以我check了下maven配置,Settings里的 ...

  8. [Unity]导入插件出现编译错误的解决办法:在工程关闭时重新添加一次插件

    刚刚在尝试死亡细胞的像素渲染插件 第一次安装插件的时候,我是把git项目解压到了工程文件夹里面,这样子就出现如图所示的报错 我退出工程重新覆盖一遍,再打开工程,就没有问题了 应该是工程在打开的时候,有 ...

  9. 18.16 gcc-3.4.5编译错误及解决方法集锦

    18.16 gcc-3.4.5编译错误及解决方法集锦 参考文章: (1)18.16 gcc-3.4.5编译错误及解决方法集锦 (2)https://www.cnblogs.com/baixu/p/10 ...

最新文章

  1. Ubuntu 系统 卸载OpenJDK 8
  2. int[]到string[]的转换方法 Array.ConvertAll
  3. Smart Crop,一种切除 PDF 扫描文档白边的新选择(工程篇)
  4. 2apt-get命令,deb包安装,源码安装
  5. Mysql查询数据库状态及信息
  6. c++ list 修改_ggplot2 修改图例的一些操作
  7. win32获取其它进程变量地址存放的信息
  8. eclipse 编码设置之BOM丢失
  9. 在OPPO的开发者大会上,看到了另一个OPPO
  10. Java虚拟机对内部锁的四种优化方式
  11. 7代cpu能装虚拟xp系统吗_【精选】减少DCS系统故障的实例与措施
  12. discuz源代码分析
  13. PPT插入文本框的方法技巧
  14. 国内主流云厂商下一代云主机最大可售卖384核
  15. 广发卡分期可商户分期啦
  16. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量安装eclipse
  17. fastJson字符串与Map,数组,对象,复杂对象之间的转换
  18. 浙大Python 第4章-9 查询水果价格 (15 分)
  19. 计算机网络论文 考试吧,2012年11月计算机网络学习心得体会
  20. 微信小程序 data命名不能大写

热门文章

  1. Java基础 DAY11
  2. 垃圾发电厂过磅系统是怎么运作的
  3. 干货|对于软件产品质量的一些思考
  4. 追梦猪seo针对于移动端seo优化和排名技术
  5. HDUOJ 6707 Shuffle Card
  6. MySQL基础系列之 视图详解
  7. vue实现监控流-rtsp转flv
  8. [问题已解决]你申请的名称指向特定地域范围或地理名称,请提供相应资料证明可使用该地域范围或地理名称作为帐号名称
  9. 校招c语言笔试题数组,华为校园招聘考试C语言C笔试题
  10. 我的物联网项目之下单渠道