目录

编译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 尾声

我也是自己猜了半天,把和龙架构无关的编译内容改了。