编译komari-agent和cloudflared
目录
这篇文章介绍了如何使用go编译cloudflared
注意
注1、仅供参考。
1 安装golang
笔者使用的debian使用apt即可安装go。
sudo apt install golang
2 编译komari-agent
2.1 拉取源码
git clone https://github.com/komari-monitor/komari-agent.git
2.2 修改编译脚本build_all.sh
修改如下内容
# 定义操作系统和架构列表
OS_LIST=("windows" "linux" "darwin" "freebsd")
ARCH_LIST=("amd64" "arm64" "386" "arm")
修改后如下
# 定义操作系统和架构列表
OS_LIST=("linux")
ARCH_LIST=("loong64")
2.3 运行编译脚本build_all.sh
./build_all.sh
3 编译cloudflared
3.1 安装make
sudo apt install make
3.2 拉取源码
git clone https://github.com/cloudflare/cloudflared.git
3.3 修改Makefile
修改如下内容
LOCAL_ARCH ?= $(shell uname -m)
ifneq ($(GOARCH),)
TARGET_ARCH ?= $(GOARCH)
else ifeq ($(LOCAL_ARCH),x86_64)
TARGET_ARCH ?= amd64
else ifeq ($(LOCAL_ARCH),amd64)
TARGET_ARCH ?= amd64
else ifeq ($(LOCAL_ARCH),386)
TARGET_ARCH ?= 386
else ifeq ($(LOCAL_ARCH),i686)
TARGET_ARCH ?= amd64
else ifeq ($(shell echo $(LOCAL_ARCH) | head -c 5),armv8)
TARGET_ARCH ?= arm64
else ifeq ($(LOCAL_ARCH),aarch64)
TARGET_ARCH ?= arm64
else ifeq ($(LOCAL_ARCH),arm64)
TARGET_ARCH ?= arm64
else ifeq ($(shell echo $(LOCAL_ARCH) | head -c 4),armv)
TARGET_ARCH ?= arm
else ifeq ($(LOCAL_ARCH),s390x)
TARGET_ARCH ?= s390x
else
$(error This system's architecture $(LOCAL_ARCH) isn't supported)
endif
LOCAL_OS ?= $(shell go env GOOS)
ifeq ($(LOCAL_OS),linux)
TARGET_OS ?= linux
else ifeq ($(LOCAL_OS),darwin)
TARGET_OS ?= darwin
else ifeq ($(LOCAL_OS),windows)
TARGET_OS ?= windows
else ifeq ($(LOCAL_OS),freebsd)
TARGET_OS ?= freebsd
else ifeq ($(LOCAL_OS),openbsd)
TARGET_OS ?= openbsd
else
$(error This system's OS $(LOCAL_OS) isn't supported)
endif
修改后如下
LOCAL_ARCH ?= $(shell uname -m)
ifneq ($(GOARCH),)
TARGET_ARCH ?= $(GOARCH)
else ifeq ($(LOCAL_ARCH),loongarch64)
TARGET_ARCH ?= loong64
else ifeq ($(LOCAL_ARCH),LoongArch64)
TARGET_ARCH ?= loong64
else ifeq ($(LOCAL_ARCH),loong64)
TARGET_ARCH ?= loong64
else
$(error This system's architecture $(LOCAL_ARCH) isn't supported)
endif
LOCAL_OS ?= $(shell go env GOOS)
ifeq ($(LOCAL_OS),linux)
TARGET_OS ?= linux
else
$(error This system's OS $(LOCAL_OS) isn't supported)
endif
修改如下内容
.PHONY: ci-build
ci-build:
@GOOS=linux GOARCH=amd64 $(MAKE) cloudflared
@mkdir -p artifacts
@mv cloudflared artifacts/cloudflared
.PHONY: ci-fips-build
ci-fips-build:
@FIPS=true GOOS=linux GOARCH=amd64 $(MAKE) cloudflared
@mkdir -p artifacts
@mv cloudflared artifacts/cloudflared
修改后如下
.PHONY: ci-build
ci-build:
@GOOS=linux GOARCH=loong64 $(MAKE) cloudflared
@mkdir -p artifacts
@mv cloudflared artifacts/cloudflared
.PHONY: ci-fips-build
ci-fips-build:
@FIPS=true GOOS=linux GOARCH=loong64 $(MAKE) cloudflared
@mkdir -p artifacts
@mv cloudflared artifacts/cloudflared
3.4 运行make
make cloudflared
4 编译komari
go build -ldflags="-s -w" -o komari
5 编译ddns-go
make build
6 尾声
我也是自己猜了半天,把和龙架构无关的编译内容改了。