Recompilación con ServBay
ServBay ofrece a los usuarios de macOS y Windows un potente y completo entorno de desarrollo local para la web, que incluye una gran variedad de paquetes y herramientas. Además de los paquetes preinstalados en ServBay, en ocasiones los desarrolladores pueden necesitar recompilar algunos componentes para adaptarlos a necesidades específicas, tales como:
- Activar opciones de compilación particulares en algún paquete.
- Añadir módulos o extensiones que ServBay no incluye por defecto (por ejemplo, nuevas extensiones de PHP o módulos de PostgreSQL).
- Compilar con una versión diferente de alguna biblioteca, distinta a la que viene por defecto con ServBay.
- Realizar modificaciones personalizadas sobre los paquetes que provee ServBay.
ServBay proporciona el entorno de compilación y la cadena de herramientas necesarias para que los usuarios puedan completar estas tareas de recompilación de forma sencilla.
Para recompilar con éxito, es necesario tener conocimientos básicos sobre el proceso de compilación en el sistema operativo correspondiente:
- macOS/Linux: uso de herramientas de compilación Unix/Linux como
configure
,make
,make install
- Windows: sistemas de construcción como Visual Studio, MSBuild, cmake, etc.
Requisitos previos
Antes de comenzar el proceso de recompilación, asegúrate de cumplir con los siguientes requisitos:
Instalar ServBay Development Library: Este es el componente clave para la recompilación. Incluye todas las bibliotecas, archivos de cabecera y recursos de desarrollo necesarios en el entorno ServBay. Puedes encontrarlo e instalarlo desde el panel de Paquetes en la interfaz de la aplicación ServBay.
Instalar el conjunto de herramientas de desarrollo:
macOS
Instala Xcode Command Line Tools: Es el conjunto básico de herramientas de desarrollo provisto por macOS, que incluye el compilador Clang, el enlazador y otras utilidades esenciales. Abre la Terminal y ejecuta el siguiente comando para instalar:
bashxcode-select --install
1Si ya está instalado, el sistema lo notificará.
Instala herramientas de compilación adicionales: Para compilar la mayoría de los proyectos de código abierto, también necesitas herramientas como
autoconf
,automake
ylibtool
, entre otras. Normalmente se recomienda usar el gestor de paquetes Homebrew para instalarlas:bashbrew install autoconf automake libtool cmake
1Si aún no tienes Homebrew instalado, consulta la web oficial de Homebrew para seguir la guía de instalación.
Windows
Instala Visual Studio Build Tools o Visual Studio Community: En Windows, necesitas el compilador Microsoft Visual C++ y las herramientas de construcción. Puedes elegir entre las siguientes opciones:
Opción 1: Visual Studio Build Tools (recomendado, instalación más ligera)
- Descarga e instala Visual Studio Build Tools
- Durante la instalación, selecciona la carga de trabajo "C++ build tools"
- Asegúrate de incluir los siguientes componentes:
- MSVC v143 - VS 2022 C++ x64/x86 herramientas de compilación
- Windows 11 SDK (última versión)
- Herramienta CMake
Opción 2: Visual Studio Community
- Descarga e instala Visual Studio Community
- Durante la instalación, selecciona la carga de trabajo "Desarrollo de escritorio con C++"
- Verifica que estén incluidos CMake y Windows SDK
Instala herramientas adicionales: Para algunos proyectos open source, también puede que necesites instalar:
- Git for Windows: Descarga de código fuente
- MSYS2 o vcpkg: Gestión de dependencias para C/C++
- Python: Algunos scripts de construcción requieren Python
powershell# Instalar herramientas adicionales con chocolatey (opcional) choco install git cmake python msys2
1
2
Configuración del entorno de compilación
Tras instalar ServBay Development Library y las herramientas necesarias, debes inicializar el entorno de compilación. Esta etapa implica configurar una serie de variables de entorno para indicar a los compiladores y sistemas de construcción dónde encontrar las bibliotecas, headers y binarios de ServBay, permitiendo así enlazarlos correctamente.
La configuración de entorno varía según el sistema operativo y arquitectura:
macOS
El entorno de ejecución de ServBay se distingue según la arquitectura del procesador de tu Mac: Intel (x86_64) o Apple Silicon (Arm64). Selecciona el comando de inicialización adecuado según la arquitectura actual de ServBay Runtime.
Windows
En Windows, ServBay está disponible para arquitectura x64, con instalación en el directorio C:\ServBay
.
Comprobar la arquitectura de CPU del ServBay Runtime
macOS
Puedes comprobar la arquitectura revisando cualquier ejecutable en el directorio bin
de ServBay. Por ejemplo, revisa bison
:
bash
# Ejecuta el siguiente comando en la terminal para comprobar
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable arm64
1
2
3
2
3
bash
# Ejecuta el siguiente comando en la terminal para comprobar
$ file /Applications/ServBay/bin/bison
/Applications/ServBay/bin/bison: Mach-O 64-bit executable x86_64
1
2
3
2
3
Windows
ServBay en Windows actualmente soporta arquitectura x64. Puedes comprobarlo en PowerShell:
powershell
# Ejecuta el siguiente comando en PowerShell
PS> Get-Command "C:\ServBay\bin\bison.exe" | Select-Object -ExpandProperty FileVersionInfo | Select-Object ProductName, FileDescription
1
2
2
O revisa las propiedades del archivo para verificar la arquitectura.
Después de confirmar la arquitectura, elige el script adecuado para inicializar el entorno.
Inicializar variables de entorno de compilación
Elige el script de inicialización adecuado según tu sistema operativo y arquitectura:
macOS
Abre una nueva terminal y copia/pega el script correspondiente a la arquitectura de tu CPU. Estos scripts configuran las rutas y banderas necesarias para el entorno de compilación de ServBay.
bash
# Determinar el número de núcleos para compilación paralela
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Ruta base de instalación de ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nombre del directorio de paquetes
SERVBAY_PACKAGE_DIR_NAME="package"
# Ruta completa de paquetes
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Ruta de binarios ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Ruta de configuración
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Ruta de datos variables
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Ruta de ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Ruta de headers de Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Ruta de librerías de 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"
# Directorio de compilación actual
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Información de la versión de OpenSSL
OPENSSL_SELECTED_VERSION="3.2"
OPENSSL_VERSION="3.2.1"
# Versión mínima de macOS para compilar
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey o superior
# Bandera de arquitectura de CPU
BUILD_CPU_ARCH="-arch arm64"
BUILD_CPU_ARCH_CMAKE="arm64"
BUILD_MACOS_TARGET="" # Arm64 usualmente no necesita -target
# Bandera del compilador C: nivel de optimización, versión mínima de macOS, arquitectura
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Bandera del enlazador: rpath, ruta de librerías, versión y arquitectura
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}"
# Ruta de headers para compilador/preprocesador C y CXX
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Bandera del compilador C++
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Priorizar bin/sbin de ServBay en variable PATH
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Ruta de búsqueda pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Ruta específica para pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Ruta alternativa para pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Añadir bin/sbin de sistema y Homebrew al PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Ruta por defecto de Homebrew
# Agregar rutas de OpenSSL a LDFLAGS y 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}"
# Añadir rutas de pkgconfig de 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"
# Una vez configuradas las variables, puedes compilar en esta terminal
echo "Entorno de compilación ServBay Arm64 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
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
# Determinar el número de núcleos para compilación paralela
CPU_NUMBER=$(sysctl -n hw.ncpu)
# Ruta base de instalación de ServBay
SERVBAY_BASE_FULL_PATH="/Applications/ServBay"
# Nombre del directorio de paquetes
SERVBAY_PACKAGE_DIR_NAME="package"
# Ruta completa de paquetes
SERVBAY_PACKAGE_FULL_PATH="${SERVBAY_BASE_FULL_PATH}/${SERVBAY_PACKAGE_DIR_NAME}"
# Ruta de binarios ServBay
SERVBAY_BIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/bin"
SERVBAY_SBIN_PATH="${SERVBAY_PACKAGE_FULL_PATH}/sbin"
# Ruta de configuración
SERVBAY_ETC_PATH="${SERVBAY_PACKAGE_FULL_PATH}/etc"
# Ruta de datos variables
SERVBAY_VAR_PATH="${SERVBAY_PACKAGE_FULL_PATH}/var"
# Ruta de ServBay Development Library
SERVBAY_COMMON_PATH="${SERVBAY_PACKAGE_FULL_PATH}/common"
# Ruta de headers de Development Library
SERVBAY_COMMON_INCLUDE_PATH="${SERVBAY_COMMON_PATH}/include"
# Ruta de librerías de 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"
# Directorio de compilación actual
SERVBAY_BUILD_DIR=$(pwd)
SERVBAY_BUILD_SRC_DIR=${SERVBAY_BUILD_DIR}/src
# Información de la versión de OpenSSL
OPENSSL_SELECTED_VERSION="1.1.1u"
OPENSSL_VERSION="1.1.1u"
# Versión mínima de macOS para compilar
BUILD_OS_MIN_VERSION="12.00" # macOS Monterey o superior
# Bandera de arquitectura de CPU
BUILD_CPU_ARCH="-arch x86_64"
BUILD_CPU_ARCH_CMAKE="x86_64"
# Bandera de plataforma (Inte suele requerir -target)
BUILD_MACOS_TARGET="-target x86_64-apple-macos${BUILD_OS_MIN_VERSION}"
# Bandera del compilador C: nivel de optimización, versión mínima de macOS, arquitectura y plataforma objetivo
export CFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Bandera del enlazador: rpath, ruta de librerías, versión, arquitectura y plataforma objetivo
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}"
# Ruta de headers para compilador/preprocesador C y CXX
export CPPFLAGS="-I${SERVBAY_COMMON_INCLUDE_PATH}"
# Bandera del compilador C++
export CXXFLAGS="-Qunused-arguments -O3 -mmacosx-version-min=${BUILD_OS_MIN_VERSION} ${BUILD_CPU_ARCH} ${BUILD_MACOS_TARGET}"
# Priorizar bin/sbin de ServBay en variable PATH
export PATH="${SERVBAY_BIN_PATH}:${SERVBAY_SBIN_PATH}:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin"
# Ruta de búsqueda pkg-config
export PKG_CONFIG_PATH="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Ruta específica para pkg-config
export PKG_CONFIG="${SERVBAY_BIN_PATH}/pkg-config"
# Ruta alternativa para pkg-config
export PKG_CONFIG_LIBDIR="${SERVBAY_COMMON_LIB_PATH}/pkgconfig"
# Añadir bin/sbin de sistema y Homebrew al PATH
export PATH=$PATH:"/usr/local/bin:/usr/local/sbin"
export PATH=$PATH:"/opt/homebrew/bin/" # Ruta por defecto de Homebrew
# Agregar rutas de OpenSSL a LDFLAGS y 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}"
# Añadir rutas de pkgconfig de 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"
# Una vez configuradas las variables, puedes compilar en esta terminal
echo "Entorno de compilación ServBay x86_64 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
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
En Windows, debes configurar las variables en PowerShell o el símbolo de desarrollo (Developer Command Prompt). El siguiente script es para arquitectura x64:
powershell
# Determinar el número de núcleos para compilación paralela
$CPU_NUMBER = (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors
# Ruta base de instalación de ServBay (Windows)
$SERVBAY_BASE_FULL_PATH = "C:\ServBay"
# Nombre del directorio de paquetes
$SERVBAY_PACKAGE_DIR_NAME = "package"
# Ruta completa de paquetes
$SERVBAY_PACKAGE_FULL_PATH = "${SERVBAY_BASE_FULL_PATH}\${SERVBAY_PACKAGE_DIR_NAME}"
# Ruta de binarios
$SERVBAY_BIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\bin"
$SERVBAY_SBIN_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\sbin"
# Ruta de configuración
$SERVBAY_ETC_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\etc"
# Ruta de datos variables
$SERVBAY_VAR_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\var"
# Ruta de ServBay Development Library
$SERVBAY_COMMON_PATH = "${SERVBAY_PACKAGE_FULL_PATH}\common"
# Ruta de headers
$SERVBAY_COMMON_INCLUDE_PATH = "${SERVBAY_COMMON_PATH}\include"
# Ruta de librerías
$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"
# Directorio de compilación actual
$SERVBAY_BUILD_DIR = Get-Location
$SERVBAY_BUILD_SRC_DIR = "${SERVBAY_BUILD_DIR}\src"
# Información de la versión de OpenSSL (Windows)
$OPENSSL_SELECTED_VERSION = "3.2"
$OPENSSL_VERSION = "3.2.1"
# Configuración de compilación para Windows
$BUILD_PLATFORM = "x64"
$BUILD_CONFIG = "Release"
# Configurar variables de entorno
$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
# Configurar PATH: prioridad a bin/sbin de ServBay
$env:PATH = "${SERVBAY_BIN_PATH};${SERVBAY_SBIN_PATH};$env:PATH"
# Variables para el 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"
# Variables para pkg-config (si está disponible)
$env:PKG_CONFIG_PATH = "${SERVBAY_COMMON_LIB_PATH}\pkgconfig"
# Agregar rutas de 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"
# Variables para CMAKE
$env:CMAKE_PREFIX_PATH = $SERVBAY_COMMON_PATH
$env:CMAKE_INSTALL_PREFIX = $SERVBAY_COMMON_PATH
# Finalización
Write-Host "Entorno de compilación 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
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
Si usas Developer Command Prompt, también puedes emplear el siguiente script por lotes:
batch
@echo off
REM Configurar entorno de compilación para ServBay en Windows
REM Ruta base de instalación
set SERVBAY_BASE_FULL_PATH=C:\ServBay
set SERVBAY_PACKAGE_FULL_PATH=%SERVBAY_BASE_FULL_PATH%\package
REM Rutas de 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 Versión de OpenSSL
set OPENSSL_SELECTED_VERSION=3.2
REM Configuración de variables
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 Entorno de compilación 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
Nota importante: Estas variables de entorno solo son válidas en la sesión de terminal actual. Si cierras la ventana o abres una nueva, deberás volver a ejecutar el script correspondiente.
Ejemplos de compilación
Con el entorno de compilación ya configurado, puedes descargar el código fuente y proceder a la compilación. Aquí tienes algunos ejemplos comunes de compilación multiplataforma.
Compilación de ImageMagick
ImageMagick es una poderosa librería para el procesamiento de imágenes, usada como dependencia por la extensión PHP imagick
. ServBay incluye ImageMagick por defecto, por lo que normalmente no necesitas compilarlo. Este ejemplo es solo para demostrar el flujo de trabajo de compilación usando el entorno ServBay.
macOS / Linux
Descarga y descomprime el código fuente de ImageMagick:
bash# Actualiza el número de versión según corresponda 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
4Ejecuta el script
./configure
: Con las variables de entorno configuradas, ejecuta el script de configuración. Las opciones--prefix
,--libdir
,--includedir
etc. definen los directorios de instalación, aquí apuntando a${SERVBAY_COMMON_PATH}
y sus carpetas, para que otros programas de ServBay (como la extensión PHPimagick
) puedan encontrar los nuevos archivos. Ajusta los parámetros según lo que necesite ImageMagick.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
30Ejecuta
make
ymake install
: Usandomake -j ${CPU_NUMBER}
aprovecharás todos los núcleos para acelerar la compilación. El comandomake install
instalará los archivos generados en la carpeta indicada por--prefix
.bashmake -j ${CPU_NUMBER} make install
1
2
Windows
En Windows, ImageMagick suele compilarse usando Visual Studio o CMake. Siendo más conveniente CMake:
Descarga el código fuente:
powershell# Usa curl o descarga en el navegador curl -O https://imagemagick.org/archive/releases/ImageMagick-7.1.1-33.tar.gz # Descomprime (requiere 7zip o similar) tar -xzf ImageMagick-7.1.1-33.tar.gz cd ImageMagick-7.1.1-33
1
2
3
4
5Configura con CMake (en Developer Command Prompt o PowerShell):
powershell# Crea el directorio de construcción mkdir builddir cd builddir # Configura el proyecto con 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
18Compila e instala:
powershell# Compilar cmake --build . --config Release --parallel $CPU_NUMBER # Instalar cmake --install . --config Release
1
2
3
4
Compilación de paquetes con cmake
El procedimiento con paquetes que usan el sistema de construcción cmake
suele ser similar entre plataformas. A continuación se muestra el proceso usando protobuf
(Protocol Buffers) como ejemplo.
- Descarga el código fuente de protobuf y accede al directorio.
macOS / Linux
Configura el proyecto con
cmake
:-S .
indica el directorio fuente,-B builddir
crea los archivos de construcción en la carpetabuilddir
. Las opciones como-DCMAKE_INSTALL_PREFIX
funcionan igual que--prefix
en Autotools y deben apuntar a la carpeta ServBay Development Library. Otros flags son específicos para configurar protobuf.-DCMAKE_MACOSX_RPATH=1
y-DCMAKE_INSTALL_RPATH
aseguran que las librerías puedan encontrar otras bibliotecas dentro del entorno ServBay.bash# Suponiendo que ya estás dentro del directorio fuente de 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
21Ejecuta
cmake --build
ycmake --install
: El comandocmake --build builddir
compila el proyecto en la carpetabuilddir
.cmake --install builddir
instala los archivos en el directorio configurado por-DCMAKE_INSTALL_PREFIX
.bashcmake --build builddir -j ${CPU_NUMBER} cmake --install builddir
1
2
Windows
Configura el proyecto con
cmake
(en PowerShell o Developer Command Prompt):powershell# Suponiendo que ya estás dentro del directorio fuente de 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
12Compila e instala:
powershell# Compilar cmake --build builddir --config Release --parallel $CPU_NUMBER # Instalar cmake --install builddir --config Release
1
2
3
4
Compilación de módulos PHP
Si necesitas compilar extensiones extra para alguna versión de PHP en ServBay (por ejemplo, swoole
, redis
, mongodb
, etc.), consulta el documento especializado:
Compilación de módulos PostgreSQL
Para compilar módulos adicionales para alguna versión de PostgreSQL en ServBay, consulta el documento dedicado:
Cómo compilar módulos PostgreSQL
Conclusión
Con la ServBay Development Library y la correcta configuración de variables de entorno, los desarrolladores pueden recompilar y personalizar paquetes fácilmente en macOS y Windows. Esto te aporta una gran flexibilidad para satisfacer requisitos específicos de proyecto o trabajar con versiones de librerías más recientes.
Puntos clave
- Soporte multiplataforma: ServBay ahora permite recompilar en macOS y Windows
- Diferenzas de rutas: Ten en cuenta los directorios según el sistema (macOS:
/Applications/ServBay
, Windows:C:\ServBay
) - Diferencias en herramientas: macOS emplea Xcode Command Line Tools, Windows utiliza Visual Studio Build Tools
- Configuración de entorno: Elige el script de configuración de variables adecuado para tu plataforma
Consideraciones
- Lee siempre la guía de compilación oficial del paquete antes de iniciar
- Ajusta los pasos según las particularidades del sistema de destino
- En Windows se recomienda usar CMake como sistema de construcción principal
- Algunos software open source pueden requerir dependencias o configuraciones de compilación distintas según la plataforma
Siguiendo esta guía, podrás compilar exitosamente paquetes en el entorno ServBay en macOS y Windows.