frp内网穿透神器的编译

/ 4评 / 7

已经有完整的frp二进制文件,为什么还要选择自己编译?主要是为了几点.

  1. 二次开发,比如修改特征,不要被扫描到特征,比如PBKDF2的SALT.
  2. 精简功能节约内存,毕竟路由的内存很有限.
  3. 编译出最适合自己服务器指令集的指令,提高执行效率.

基于Debian测试,实际上与系统无关.

安装必要的系统环境(一般系统都有,不放心就安装一下吧.):

apt install bison ed gawk gcc libc6-dev make

下载Go语言:https://golang.org/dl/ (并设置环境变量)

下载后解压到你自己喜欢的目录,假设如下.

root@web-server:~# wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz

--2018-12-09 21:00:51--  https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz

Resolving dl.google.com (dl.google.com)... 2607:f8b0:4007:804::200e, 216.58.217.206

Connecting to dl.google.com (dl.google.com)|2607:f8b0:4007:804::200e|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 126520483 (121M) [application/octet-stream]

Saving to: ‘go1.11.2.linux-amd64.tar.gz’



go1.11.2.linux-amd64.tar.gz 100%[===========================================>] 120.66M  33.5MB/s    in 3.8s    



2018-12-09 21:00:56 (31.5 MB/s) - ‘go1.11.2.linux-amd64.tar.gz’ saved [126520483/126520483]



root@web-server:~# tar xf go1.11.2.linux-amd64.tar.gz 

root@web-server:~/go# pwd

/root/go

设置3个环境变量.(我一般习惯在.profile下添加这些内容,注意路径可能不同.,)

export GOROOT=/root/go

export GOPATH=/root/go/work

export PATH=$PATH:/root/go/bin

一般来说,go目录下没有work目录,需要自己创建一个.

此时重新加载环境变量,就能看到go语言版本了.

运行下面这句就可以获取frp的源码了.

go get github.com/fatedier/frp

这里说的是没有Go源码在目录,实际上,这个源码就不在根目录,所以无所谓.

切换到工作目录,就可以开始编译了.

编译也非常简单,就是make了,但是要编译其他平台,就得指定make的文件.(插一句,这是go语言优点,跨平台特别好.)

结果

root@web-server:~/go/work/src/github.com/fatedier/frp# make -f Makefile.cross-compiles 

env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o ./frpc_darwin_amd64 ./cmd/frpc

env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o ./frps_darwin_amd64 ./cmd/frps

env CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -ldflags "-s -w" -o ./frpc_freebsd_386 ./cmd/frpc

env CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -ldflags "-s -w" -o ./frps_freebsd_386 ./cmd/frps

env CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -ldflags "-s -w" -o ./frpc_freebsd_amd64 ./cmd/frpc

env CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -ldflags "-s -w" -o ./frps_freebsd_amd64 ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w" -o ./frpc_linux_386 ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -ldflags "-s -w" -o ./frps_linux_386 ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./frpc_linux_amd64 ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./frps_linux_amd64 ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -ldflags "-s -w" -o ./frpc_linux_arm ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -ldflags "-s -w" -o ./frps_linux_arm ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o ./frpc_linux_arm64 ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o ./frps_linux_arm64 ./cmd/frps

env CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -o ./frpc_windows_386.exe ./cmd/frpc

env CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -o ./frps_windows_386.exe ./cmd/frps

env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o ./frpc_windows_amd64.exe ./cmd/frpc

env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o ./frps_windows_amd64.exe ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=mips64 go build -ldflags "-s -w" -o ./frpc_linux_mips64 ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=mips64 go build -ldflags "-s -w" -o ./frps_linux_mips64 ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=mips64le go build -ldflags "-s -w" -o ./frpc_linux_mips64le ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=mips64le go build -ldflags "-s -w" -o ./frps_linux_mips64le ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=mips GOMIPS=softfloat go build -ldflags "-s -w" -o ./frpc_linux_mips ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=mips GOMIPS=softfloat go build -ldflags "-s -w" -o ./frps_linux_mips ./cmd/frps

env CGO_ENABLED=0 GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -ldflags "-s -w" -o ./frpc_linux_mipsle ./cmd/frpc

env CGO_ENABLED=0 GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -ldflags "-s -w" -o ./frps_linux_mipsle ./cmd/frps

编译结果就在根目录.

  1. sRGB说道:

    # linux下golang环境搭建自动脚本 by 蘭雅sRGB

    wget -qO- https://git.io/fp4jf | bash

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注