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