Recompilando com o ServBay
O ServBay oferece aos usuários de macOS e Windows um ambiente local robusto e completo para desenvolvimento web, repleto de pacotes e ferramentas. Embora o ServBay já venha com diversas versões pré-instaladas de software, desenvolvedores podem precisar recompilar para atender necessidades específicas, como:
- Ativar determinadas opções de compilação para um pacote.
- Adicionar módulos ou extensões não inclusos por padrão no ServBay (exemplo: novas extensões PHP ou módulos PostgreSQL).
- Compilar usando uma biblioteca diferente da versão padrão do ServBay.
- Modificar pacotes fornecidos pelo ServBay para customizações específicas.
O ServBay oferece toda a infraestrutura e as ferramentas necessárias para facilitar essas tarefas de recompilação.
Para realizar uma recompilação com sucesso, é importante ter conhecimento básico sobre processos de compilação de software no sistema operacional escolhido:
- macOS/Linux: Ferramentas de compilação Unix/Linux como
configure
,make
,make install
- Windows: Sistema de build do Visual Studio, MSBuild, cmake, entre outros
Pré-requisitos
Antes de começar a recompilar, garanta que as seguintes etapas estejam cumpridas:
Instalar a ServBay Development Library: Este é o componente essencial para recompilações, reunindo todas as bibliotecas, arquivos de cabeçalho e recursos de desenvolvimento necessários. Instale-o pelo painel de Pacotes no aplicativo do ServBay.
Instalar conjunto de ferramentas de desenvolvimento:
macOS
Instalar Xcode Command Line Tools: Ferramentas básicas de desenvolvimento do sistema macOS, incluindo compilador (Clang), linker entre outros. No terminal, execute:
bashxcode-select --install
1Caso já estejam instaladas, o sistema irá avisar.
Instalar ferramentas adicionais de compilação: Para compilar a maioria dos softwares open source, é recomendado instalar
autoconf
,automake
,libtool
e outros. Utilize o Homebrew para instalar:bashbrew install autoconf automake libtool cmake
1Se ainda não tiver o Homebrew, siga as instruções no site oficial para instalá-lo.
Windows
Instalar Visual Studio Build Tools ou Visual Studio Community: Para Windows é necessário o compilador Microsoft Visual C++ e ferramentas de build. Escolha uma das opções abaixo:
Opção 1: Visual Studio Build Tools (Recomendado, instalação menor)
- Baixe e instale Visual Studio Build Tools
- Durante a instalação, selecione “C++ build tools”
- Inclua os seguintes componentes:
- MSVC v143 - VS 2022 C++ x64/x86 Build tools
- Windows 11 SDK (versão mais recente)
- CMake tools
Opção 2: Visual Studio Community
- Baixe e instale Visual Studio Community
- Escolha “Desenvolvimento Desktop com C++” durante a instalação
- Certifique-se que o CMake tools e o Windows SDK estejam inclusos
Instalar ferramentas adicionais: Alguns projetos também podem requerer:
- Git for Windows: Para baixar códigos fonte
- MSYS2 ou vcpkg: Gerenciamento de dependências C/C++
- Python: Necessário para alguns scripts de build
powershell# Instalação das ferramentas adicionais (opcional) choco install git cmake python msys2
1
2
Configurando o Ambiente de Compilação
Após instalar a ServBay Development Library e as ferramentas essenciais, é hora de inicializar o ambiente de compilação. Essa etapa é fundamental para definir variáveis de ambiente que informam os caminhos de bibliotecas, arquivos de cabeçalho e executáveis do ServBay ao compilador e ao sistema de build, assegurando o correto linking e resolução de dependências.
As configurações variam conforme o sistema operacional e arquitetura:
macOS
O ambiente do ServBay varia entre Macs com processadores Intel (x86_64) e Apple Silicon (Arm64). Escolha o comando de inicialização adequado para sua arquitetura.
Windows
No Windows, o ServBay suporta apenas arquitetura x64, e é instalado em C:\ServBay
.
Checando a Arquitetura do ServBay Runtime
macOS
Confira a arquitetura de qualquer executável na pasta bin
do ServBay. Por exemplo, verifique o bison
:
bash
# Execute no terminal:
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Execute no terminal:
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
No ServBay para Windows, apenas x64 é suportado. No PowerShell, confira executáveis com:
powershell
# Execute no PowerShell:
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
Ou confira as propriedades do arquivo.
Após identificar a arquitetura, utilize o script de inicialização correspondente.
Inicializando Variáveis de Ambiente para Compilação
Escolha o script adequado conforme seu sistema e arquitetura:
macOS
Abra um novo terminal e execute o script referente à arquitetura do seu processador. Ele irá definir caminhos e flags necessários para o ambiente de compilação do ServBay.
bash
# Número de núcleos do processador para compilação paralela
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Caminho base da instalação ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nome do diretório de pacotes
SERVBAY_PACKAGE_DIR_NAME="package"
# Caminho completo dos pacotes
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Caminho dos binários do ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Caminho dos arquivos de configuração
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Caminho dos arquivos variáveis
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Caminho da ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Caminho dos headers da Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Caminho das bibliotecas da Development Library
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Pasta de build atual
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Informações do OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Versão mínima do macOS alvo
BUILD_OS_MIN_VERSION="12.00" # Monterey ou superior
# Flag de arquitetura
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 normalmente dispensa -target
# Flags do compilador C: otimização, versão mínima, arquitetura
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flags do linker: rpath, busca de libs, versão mínima, arquitetura
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flags do pré-processador C e compilador CXX: headers
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flags do compilador C++
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# PATH priorizando binários do ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Busca pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Caminho específico do pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Diretório de libs para pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Adiciona bin/sbin do sistema e Homebrew ao PATH para fallback
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Padrão do Homebrew
# Adiciona libs e headers do OpenSSL ao LDFLAGS e CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# Adiciona caminho pkgconfig do OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# Finalize a configuração e já pode compilar no terminal
echo "Ambiente Arm64 do ServBay configurado para compilação."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
bash
# Número de núcleos do processador para compilação paralela
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Caminho base da instalação ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nome do diretório de pacotes
SERVBAY_PACKAGE_DIR_NAME="package"
# Caminho completo dos pacotes
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Caminho dos binários do ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Caminho dos arquivos de configuração
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Caminho dos arquivos variáveis
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Caminho da ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Caminho dos headers da Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Caminho das bibliotecas da Development Library
SERVBAY_COMMON_LIB_PATH="${SERVBAY_COMMON_PATH}/lib"
SERVBAY_COMMON_LIBEXEC_PATH="${SERVBAY_COMMON_PATH}/libexec"
SERVBAY_COMMON_SHARE_PATH="${SERVBAY_COMMON_PATH}/share"
SERVBAY_COMMON_MAN_PATH="${SERVBAY_COMMON_PATH}/man"
SERVBAY_COMMON_DOC_PATH="${SERVBAY_COMMON_PATH}/doc"
# Pasta de build atual
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Informações do OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Versão mínima do macOS alvo
BUILD_OS_MIN_VERSION="12.00" # Monterey ou superior
# Flag de arquitetura
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Plataforma alvo (Intel normalmente exige -target)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Flags do compilador C: otimização, versão mínima, arquitetura, plataforma alvo
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flags do linker: rpath, busca de libs, versão mínima, arquitetura, plataforma alvo
export LDFLAGS="-Wl,-rpath -Wl,${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_COMMON_LIB_PATH} -L${SERVBAY_PACKAGE_FULL_PATH} -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Flags do pré-processador C e compilador CXX: headers
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Flags do compilador C++
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# PATH priorizando binários do ServBay
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Busca pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Caminho específico do pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Diretório de libs para pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Adiciona bin/sbin do sistema e Homebrew ao PATH para fallback
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Padrão do Homebrew
# Adiciona libs e headers do OpenSSL ao LDFLAGS e CPPFLAGS
export LDFLAGS="-L${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib ${LDFLAGS}"
export CPPFLAGS="-I${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/include ${CPPFLAGS}"
# Adiciona caminho pkgconfig do OpenSSL
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_LIBDIR}:${SERVBAY_COMMON_PATH}/openssl/${OPENSSL_SELECTED_VERSION}/lib/pkgconfig"
# Finalize a configuração e já pode compilar no terminal
echo "Ambiente x86_64 do ServBay configurado para compilação."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Windows
No Windows, defina as variáveis de ambiente usando PowerShell ou Developer Command Prompt:
powershell
# Número de núcleos para compilação paralela
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Caminho base da instalação do ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Nome do diretório de pacotes
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Caminho completo dos pacotes
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Caminho dos binários do ServBay
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Caminho dos arquivos de configuração
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# Caminho dos arquivos variáveis
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
$SERVBAY_COMMON_LIB_PATH = "${SERVBAY_COMMON_PATH}\lib"
$SERVBAY_COMMON_LIBEXEC_PATH = "${SERVBAY_COMMON_PATH}\libexec"
$SERVBAY_COMMON_SHARE_PATH = "${SERVBAY_COMMON_PATH}\share"
$SERVBAY_COMMON_DOC_PATH = "${SERVBAY_COMMON_PATH}\doc"
# Diretório atual de compilação
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Versão do OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Configuração de build do Windows
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Definição de variáveis de ambiente
$env:SERVBAY_BASE_FULL_PATH = $SERVBAY_BASE_FULL_PATH
$env:SERVBAY_COMMON_PATH = $SERVBAY_COMMON_PATH
$env:SERVBAY_COMMON_INCLUDE_PATH = $SERVBAY_COMMON_INCLUDE_PATH
$env:SERVBAY_COMMON_LIB_PATH = $SERVBAY_COMMON_LIB_PATH
# PATH priorizando binários do ServBay
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Variáveis do compilador
$env:INCLUDE = "${SERVBAY_COMMON_INCLUDE_PATH};$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_LIB_PATH};$env:LIB"
$env:LIBPATH = "${SERVBAY_COMMON_LIB_PATH};$env:LIBPATH"
# pkg-config se disponível
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# Adiciona paths do OpenSSL
$env:INCLUDE = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\include;$env:INCLUDE"
$env:LIB = "${SERVBAY_COMMON_PATH}\openssl\${OPENSSL_SELECTED_VERSION}\lib;$env:LIB"
# CMAKE
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Finalização
Write-Host "Ambiente de compilação ServBay Windows x64 configurado."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Para usuários do Developer Command Prompt, pode-se usar batch scripts:
batch
@echo off
REM Configurando ambiente de compilação ServBay no Windows
REM Caminho base da instalação do ServBay
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Caminhos do ServBay
set SERVBAY_BIN_PATH=%SERVBAY_PACKAGE_FULL_PATH%\bin
set SERVBAY_COMMON_PATH=%SERVBAY_PACKAGE_FULL_PATH%\common
set SERVBAY_COMMON_INCLUDE_PATH=%SERVBAY_COMMON_PATH%\include
set SERVBAY_COMMON_LIB_PATH=%SERVBAY_COMMON_PATH%\lib
REM Versão do OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Definição das variáveis de ambiente
set PATH=%SERVBAY_BIN_PATH%;%PATH%
set INCLUDE=%SERVBAY_COMMON_INCLUDE_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\include;%INCLUDE%
set LIB=%SERVBAY_COMMON_LIB_PATH%;%SERVBAY_COMMON_PATH%\openssl\%OPENSSL_SELECTED_VERSION%\lib;%LIB%
set CMAKE_PREFIX_PATH=%SERVBAY_COMMON_PATH%
echo Ambiente de compilação ServBay Windows configurado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Importante: Essas variáveis só valem para a sessão atual do terminal. Se abrir um novo terminal ou fechar o atual, execute novamente o script correspondente.
Exemplos de Compilação
Com o ambiente configurado, você já pode baixar o código-fonte e compilar diretamente. Veja exemplos práticos multiplataforma:
Compilando o ImageMagick
ImageMagick é uma biblioteca poderosa para manipulação de imagens, dependência da extensão PHP imagick
. O ServBay já inclui o ImageMagick por padrão, então em geral não é necessário recompilar. Use este exemplo para aprender o fluxo usando o ambiente ServBay.
macOS / Linux
Baixe o código-fonte e extraia:
bash# Troque pelo número da versão mais nova conforme necessário wget https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz tar zxvf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4Execute o script
./configure
: Utilizando as variáveis de ambiente definidas, rode o configure. As opções como--prefix
,--libdir
,--includedir
direcionam os arquivos para os diretórios públicos do ServBay Development Library (${SERVBAY_COMMON_PATH}
), assim os demais softwares do ambiente (como o PHPimagick
) encontram facilmente as bibliotecas e headers. Ajuste outras opções conforme necessário.bash./configure \ --prefix=${SERVBAY_COMMON_PATH} \ --libdir=${SERVBAY_COMMON_LIB_PATH} \ --includedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --oldincludedir=${SERVBAY_COMMON_INCLUDE_PATH} \ --bindir=${SERVBAY_BIN_PATH} \ --sbindir=${SERVBAY_SBIN_PATH} \ --sysconfdir=${SERVBAY_ETC_PATH} \ --datarootdir=${SERVBAY_COMMON_SHARE_PATH} \ --enable-osx-universal-binary=no \ --disable-silent-rules \ --disable-opencl \ --enable-shared \ --enable-static \ --with-freetype=yes \ --with-gvc=no \ --with-modules \ --with-webp=yes \ --with-heic=no \ --without-gslib \ --with-fpx=no \ --without-openexexr \ --with-raw=yes \ --without-lqr \ --without-djvu \ --without-fftw \ --without-pango \ --without-wmf \ --without-x \ --with-gs-font-dir=${SERVBAY_COMMON_SHARE_PATH}/ghostscript/10.02.1/Resource/Font
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Compile e instale: Use
make
para compilar. O parâmetro-j ${CPU_NUMBER}
acelera usando múltiplos núcleos. Usemake install
para instalar tudo nos diretórios da ServBay Development Library.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
No Windows, recomenda-se usar o CMake para compilar o ImageMagick:
Baixe o código-fonte:
powershell# Usando curl ou navegador curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Extrair (instale 7zip ou similar) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Configure usando CMake (Developer Command Prompt ou PowerShell):
powershell# Crie diretório de build mkdir builddir cd builddir # Configure projeto via CMake cmake .. ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DBUILD_SHARED_LIBS=ON ` -DMAGICKCORE_QUANTUM_DEPTH=16 ` -DMAGICKCORE_HDRI_ENABLE=OFF ` -DWITH_BZLIB=ON ` -DWITH_ZLIB=ON ` -DWITH_PNG=ON ` -DWITH_JPEG=ON ` -DWITH_TIFF=ON ` -DWITH_FREETYPE=ON ` -DWITH_WEBP=ON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Compile e instale:
powershell# Compilar cmake --build . --config Release --parallel $CPU_NUMBER # Instalar cmake --install . --config Release
1
2
3
4
Compilando pacotes com cmake
Para pacotes que usam o cmake
, o processo é bastante uniforme entre plataformas. Veja o exemplo com protobuf
(Protocol Buffers):
- Baixe o código-fonte e entre no diretório.
macOS / Linux
Configure projeto com
cmake
:-S .
indica a pasta de código-fonte,-B builddir
indica onde gerar arquivos de build. As opções-DCMAKE_INSTALL_PREFIX
direcionam a instalação para a ServBay Development Library. Flags como-DCMAKE_MACOSX_RPATH=1
e-DCMAKE_INSTALL_RPATH
garantem que as bibliotecas compiladas encontrem dependências corretamente no ambiente ServBay.bash# Supondo que já esteja na pasta do protobuf cmake -S . -B builddir \ -DCMAKE_INSTALL_PREFIX=${SERVBAY_COMMON_PATH} \ -DCMAKE_INSTALL_LIBDIR=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_INSTALL_INCLUDEDIR=${SERVBAY_COMMON_INCLUDE_PATH} \ -DCMAKE_INSTALL_BINDIR=${SERVBAY_BIN_PATH} \ -DCMAKE_INSTALL_SBINDIR=${SERVBAY_SBIN_PATH} \ -DCMAKE_INSTALL_SYSCONFDIR=${SERVBAY_ETC_PATH} \ -DCMAKE_INSTALL_DATAROOTDIR=${SERVBAY_COMMON_SHARE_PATH} \ -DCMAKE_MACOSX_RPATH=1 \ -DCMAKE_INSTALL_RPATH=${SERVBAY_COMMON_LIB_PATH} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_PREFIX_PATH=${SERVBAY_COMMON_PATH} \ -DBUILD_SHARED_LIBS=ON \ -Dprotobuf_BUILD_LIBPROTOC=ON \ -Dprotobuf_BUILD_SHARED_LIBS=ON \ -Dprotobuf_INSTALL_EXAMPLES=OFF \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_ABSL_PROVIDER=package \ -Dprotobuf_JSONCPP_PROVIDER=module \ -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Compile e instale com
cmake --build
ecmake --install
:bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Configure (PowerShell ou Developer Command Prompt):
powershell# Supondo que já esteja na pasta protobuf cmake -S . -B builddir ` -DCMAKE_INSTALL_PREFIX="$env:SERVBAY_COMMON_PATH" ` -DCMAKE_BUILD_TYPE=Release ` -DCMAKE_PREFIX_PATH="$env:SERVBAY_COMMON_PATH" ` -DBUILD_SHARED_LIBS=ON ` -Dprotobuf_BUILD_LIBPROTOC=ON ` -Dprotobuf_BUILD_SHARED_LIBS=ON ` -Dprotobuf_INSTALL_EXAMPLES=OFF ` -Dprotobuf_BUILD_TESTS=OFF ` -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ` -DCMAKE_CXX_STANDARD=17
1
2
3
4
5
6
7
8
9
10
11
12Compile e instale:
powershell# Compilar cmake --build builddir --config Release --parallel $CPU_NUMBER # Instalar cmake --install builddir --config Release
1
2
3
4
Compilando módulos PHP
Para compilar extensões PECL para versões específicas de PHP no ServBay (ex: swoole
, redis
, mongodb
), consulte este documento:
Compilando módulos PostgreSQL
Para adicionar módulos ao PostgreSQL no ServBay, siga o guia dedicado:
Como compilar módulos PostgreSQL
Conclusão
Graças à ServBay Development Library e ao rigoroso sistema de configuração de ambiente, desenvolvedores podem recompilar e customizar facilmente pacotes em macOS e Windows. Isso permite adaptar o ambiente às demandas do seu projeto ou trabalhar com versões mais recentes de bibliotecas.
Pontos-chave
- Suporte multiplataforma: ServBay dispõe de ambientes de compilação para macOS e Windows
- Diferenças de caminho: Atenção aos diretórios de instalação (macOS:
/Applications/ServBay
, Windows:C:\ServBay
) - Diferenças de ferramentas: macOS utiliza Xcode Command Line Tools, Windows requer Visual Studio Build Tools
- Configuração de ambiente: Execute o script de inicialização correspondente ao seu sistema
Observações
- Leia atentamente o guia oficial de compilação do software antes de iniciar
- Ajuste opções e fluxos conforme peculiaridades de cada plataforma
- Em Windows, privilegie o uso do sistema de build CMake
- Alguns projetos open source podem ter requisitos e dependências específicos para cada plataforma
Seguindo este guia, você estará pronto para recompilar e adaptar pacotes no ambiente ServBay, seja no macOS ou no Windows.