84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
| # Документация по сборке
 | ||
| 
 | ||
| ## Подготовка
 | ||
| 
 | ||
| Xray использует [Golang](https://golang.org/) в качестве языка программирования, поэтому вам необходимо сначала установить последнюю версию Golang, чтобы иметь возможность выполнить сборку.
 | ||
| 
 | ||
| ::: tip СОВЕТ
 | ||
| Установка Golang: [golang.org/doc/install](https://golang.org/doc/install)
 | ||
| :::
 | ||
| 
 | ||
| > Если вы, к сожалению, используете Windows, **обязательно** используйте Powershell.
 | ||
| 
 | ||
| ## Получение исходного кода Xray
 | ||
| 
 | ||
| ```bash
 | ||
| git clone https://github.com/XTLS/Xray-core.git
 | ||
| cd Xray-core && go mod download
 | ||
| ```
 | ||
| 
 | ||
| > Если вам нечем заняться, можете попробовать официальный инструмент GitHub: `gh repo clone XTLS/Xray-core`.
 | ||
| 
 | ||
| Примечание: в сетевых средах, где нет доступа к Google, зависимости не могут быть получены обычным способом, поэтому необходимо сначала установить `GOPROXY`:
 | ||
| 
 | ||
| ```bash
 | ||
| go env -w GOPROXY=https://goproxy.io,direct
 | ||
| ```
 | ||
| 
 | ||
| ## Сборка бинарного файла
 | ||
| 
 | ||
| :::warning
 | ||
| Команды в этом разделе необходимо выполнять в корневом каталоге Xray.
 | ||
| :::
 | ||
| 
 | ||
| ### Windows (Powershell):
 | ||
| 
 | ||
| ```powershell
 | ||
| $env:CGO_ENABLED=0
 | ||
| go build -o xray.exe -trimpath -ldflags "-s -w -buildid=" ./main
 | ||
| ```
 | ||
| 
 | ||
| ### macOS, Linux:
 | ||
| 
 | ||
| ```bash
 | ||
| CGO_ENABLED=0 go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main
 | ||
| ```
 | ||
| 
 | ||
| Выполнение этих команд создаст исполняемый файл xray в текущем каталоге.
 | ||
| 
 | ||
| ::: tip
 | ||
| Если вам нужно собрать программу с поддержкой отладки, то есть такую, к которой можно подключиться с помощью dlv для отладки, удалите опции '-w -s' из ldflags.
 | ||
| 
 | ||
| -w отключает генерацию отладочной информации. Если эта опция используется, отладка с помощью gdb будет невозможна.
 | ||
| -s отключает таблицу символов.
 | ||
| P.S.: На самом деле отладка с помощью vscode или другой IDE может быть более удобной.
 | ||
| :::
 | ||
| 
 | ||
| ## Кросс-компиляция:
 | ||
| 
 | ||
| В качестве примера рассмотрим компиляцию в среде Windows (Powershell) для сервера Linux:
 | ||
| 
 | ||
| ```powershell
 | ||
| $env:CGO_ENABLED=0
 | ||
| $env:GOOS="linux"
 | ||
| $env:GOARCH="amd64"
 | ||
| 
 | ||
| go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main
 | ||
| ```
 | ||
| 
 | ||
| После загрузки на сервер не забудьте выполнить команду `chmod +x xray` в терминале сервера.
 | ||
| 
 | ||
| ::: tip
 | ||
| Выполните команду `go tool dist list`, чтобы просмотреть все поддерживаемые системы и архитектуры.
 | ||
| :::
 | ||
| 
 | ||
| ## Воспроизводимая сборка:
 | ||
| 
 | ||
| Выполнив описанные выше шаги, вы можете собрать бинарный файл, идентичный тому, что находится в релизе.
 | ||
| 
 | ||
| ::: warning
 | ||
| Убедитесь, что вы используете ту же версию Golang, что и для сборки релиза.
 | ||
| :::
 | ||
| 
 | ||
| 
 |