---
title: Компиляция
icon: material/cog
tags: ["iptvc", "сборка"]
---

# Компиляция из исходного кода

Для компиляции потребуется [Go](https://go.dev/dl/) 1.23.6 и выше.

```bash
git clone https://git.axenov.dev/IPTV/iptvc.git
cd iptvc
make linux
# или make help для получения справки по рецептам
```

## Доступные рецепты Makefile

| Команда          | Назначение                                                    |
| ---------------- | ------------------------------------------------------------- |
| `make linux`     | Сборка под Linux (amd64 по умолчанию)                         |
| `make win`       | Сборка под Windows                                            |
| `make darwin`    | Сборка под macOS                                              |
| `make release`   | Сборка под все платформы (linux/windows/darwin × amd64/arm64) |
| `make test`      | Запуск всех тестов                                            |
| `make clear`     | Удаление скомпилированных бинарников                          |
| `make image`     | Сборка Docker-образа для текущей платформы                    |
| `make image-all` | Сборка и отправка multi-arch манифеста в registry             |
| `make help`      | Вывод списка доступных рецептов                               |

## Управление архитектурой

Архитектура целевой платформы задаётся переменной `GOARCH`:

```bash
make darwin GOARCH=arm64    # macOS на Apple Silicon
make linux GOARCH=arm64     # Linux ARM (Raspberry Pi и т.п.)
```

## Результат

Скомпилированные бинарники и ZIP-архивы помещаются в директорию `bin/`:

```
bin/
├── linux_amd64/iptvc       # или linux_arm64/
├── linux_amd64.zip
├── windows_amd64/iptvc.exe # или windows_arm64/
├── windows_amd64.zip
├── darwin_amd64/iptvc      # или darwin_arm64/
└── darwin_amd64.zip
```

## Сборка без Make

Можно скомпилировать напрямую через `go build`:

```bash
go build -o iptvc .
go build -trimpath -ldflags="-s -w" -o iptvc .
```
