> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Guia para compilar o ClickHouse a partir do código-fonte em sistemas macOS

# Compilar no macOS para macOS

<Info>
  **Este guia de compilação é destinado a colaboradores que modificam o próprio ClickHouse.**

  Se você não estiver alterando o código-fonte do ClickHouse, poderá instalar uma versão pré-compilada do ClickHouse conforme descrito em [Quick Start](/docs/pt-BR/get-started/setup/install).
</Info>

O ClickHouse pode ser compilado em macOS x86\_64 (Intel) e arm64 (Apple Silicon) no macOS 10.15 (Catalina) ou superior.

Como compilador, há suporte apenas ao Clang do Homebrew.

<div id="install-prerequisites">
  ## Instale os pré-requisitos
</div>

Primeiro, consulte a [documentação geral de pré-requisitos](/docs/pt-BR/resources/develop-contribute/introduction/developer-instruction).

Em seguida, instale o [Homebrew](https://brew.sh/) e execute

Depois, execute:

```bash theme={null}
brew update
brew install ccache cmake ninja libtool gettext llvm lld binutils grep findutils nasm bash rust rustup
```

<Note>
  A Apple usa, por padrão, um sistema de arquivos que não diferencia maiúsculas de minúsculas. Embora isso normalmente não afete a compilação (especialmente compilações do zero), pode atrapalhar operações com arquivos, como `git mv`.
  Para desenvolvimento sério no macOS, certifique-se de que o código-fonte esteja armazenado em um volume de disco que diferencie maiúsculas de minúsculas; por exemplo, consulte [estas instruções](https://brianboyko.medium.com/a-case-sensitive-src-folder-for-mac-programmers-176cc82a3830).
</Note>

<div id="build-clickhouse">
  ## Compile o ClickHouse
</div>

Para compilar, é necessário usar o compilador Clang do Homebrew:

```bash theme={null}
cd ClickHouse
mkdir build
export PATH=$(brew --prefix llvm)/bin:$PATH
cmake -S . -B build
cmake --build build
# O binário resultante será criado em: build/programs/clickhouse
```

<Note>
  Se você estiver recebendo erros `ld: archive member '/' not a mach-o file in ...` durante a etapa de vinculação, talvez seja necessário
  usar o llvm-ar definindo a flag `-DCMAKE_AR=/opt/homebrew/opt/llvm/bin/llvm-ar`.
</Note>

<div id="caveats">
  ## Observações
</div>

Se você pretende executar o `clickhouse-server`, aumente a variável `maxfiles` do sistema.

<Note>
  Você precisará usar sudo.
</Note>

Para isso, crie o arquivo `/Library/LaunchDaemons/limit.maxfiles.plist` com o seguinte conteúdo:

```xml theme={null}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>524288</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>
```

Defina as permissões corretas para o arquivo:

```bash theme={null}
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
```

Verifique se o arquivo está correto:

```bash theme={null}
plutil /Library/LaunchDaemons/limit.maxfiles.plist
```

Carregue o arquivo (ou reinicie):

```bash theme={null}
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```

Para verificar se está funcionando, use os comandos `ulimit -n` ou `launchctl limit maxfiles`.
