Compilation Documentation
Prerequisites
Xray uses Golang as its programming language. You need to install the latest version of Golang to compile it.
TIP
Install Golang: golang.org/doc/install
If you are unfortunately using Windows, please be sure to use PowerShell.
Pull Xray Source Code
git clone https://github.com/XTLS/Xray-core.git
cd Xray-core && go mod download2
If you have nothing better to do, you can try the GitHub official tool:
gh repo clone XTLS/Xray-core
Note: In network environments where Google cannot be accessed normally, dependencies cannot be pulled correctly. You need to set GOPROXY first:
go env -w GOPROXY=https://goproxy.io,directBuild Binary
WARNING
The commands in this section need to be run inside the Xray root directory.
Windows (Powershell)
$env:CGO_ENABLED=0
go build -o xray.exe -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./main2
macOS, Linux
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./mainRunning the above commands will generate the xray executable file in the directory.
TIP
If you need to compile a debuggable program (i.e., you can attach dlv to the running program for debugging), please remove the -w -s options from ldflags.
-w: Disable DWARF generation (debug info). After using this option, you cannot use gdb for debugging.-s: Disable the symbol table.
PS: Actually, debugging with VSCode or other IDEs seems more convenient.
Cross Compilation
Here is an example of compiling for a Linux server in a Windows (Powershell) environment:
$env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o xray -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./main2
3
4
5
After uploading to the server, remember to execute chmod +x xray in the server terminal.
TIP
Run go tool dist list to view all supported systems and architectures.
Reproducible Build
Use the following command to build (<short commit ID> should be replaced with the first seven characters of the corresponding commit SHA-256):
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="all=-l=4" -ldflags="-X [github.com/xtls/xray-core/core.build=](https://github.com/xtls/xray-core/core.build=)<short commit ID> -s -w -buildid=" -v ./mainFor MIPS/MIPSLE architectures, you should use:
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="-l=4" -ldflags="-X [github.com/xtls/xray-core/core.build=](https://github.com/xtls/xray-core/core.build=)<short commit ID> -s -w -buildid=" -v ./mainWARNING
Please ensure that the Golang version you are using is consistent with the one used to compile the Release.
Compiling for Windows 7
Replace the Golang tools with the version provided in go-win7, and then proceed with the compilation steps above.