Copyright
Copyright © José
Luis Lara Carrascal 2006-2024
Sumario
Introducción
Preliminares
Instalación
Optimizaciones
Compilar las Librerías
Compilar las Aplicaciones
Directorios de configuración personal
Configurar el inicio de Enlightenment - E17
Iniciamos Enlightenment - E17
Enlaces
Introducción
Enlightenment - E17, es la siguiente generación del histórico administrador de ventanas, Enlightenment, ahora llamado E16. Sin llegar a
ser un verdadero entorno de escritorio, E17
proporciona al usuario una interfaz gráfica muy configurable,
destacando la inclusión de un administrador de archivos y de las
típicas aplicaciones auxiliares (indicadores de estado,
lanzadores, etc.) que podemos colocar en el panel o en el fondo de la
pantalla. Otro aspecto a tener en cuenta, es el visual, proporcionado
por la librería Evas, que convierte a este entorno gráfico en uno de los más "bonitos" de nuestro sistema GNU/Linux.
Quizá para los usuarios tradicionales de administradores de ventanas, E17
resulte
demasiado grande, teniendo en cuenta lo que ocupa en disco, comparado
con cualquier administrador de ventanas clásico, de los tratados
en esta web. Probablemente su uso esté más orientado a
los usuarios de entornos de escritorio pesados que buscan algo similar,
pero que consuma menos memoria.
En este manual trataremos la instalación desde código
fuente de este entorno, en su versión de desarrollo, que desde
el 21-12-2012, ya tiene una versión estable del mismo, pero no
incluye todo el software compatible.
Preliminares
El entorno gráfico lo instalaremos junto con las librerías de las que depende en un solo directorio: /opt/e17.
Si una vez probado no nos interesa seguir usándolo sólo
tendremos que borrar dicho directorio, y no quedará
ningún rastro de E17
en nuestro sistema. Antes que nada, preparemos nuestro sistema
para que reconozca el nuevo directorio y no existan errores en la
compilación de E17.
1)
Editamos el archivo /etc/ld.so.conf
y añadimos /opt/e17/lib64
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib
/usr/lib/qt3/lib
/usr/local/lib
/opt/e17/lib64
|
Si por lo que sea, no queremos tocar este archivo, ejecutamos el siguiente comando:
$ su -c "echo /opt/e17/lib64 > /etc/ld.so.conf.d/e17.conf"
|
2)
En nuestro home,
editamos el archivo .bashrc,
y añadimos /opt/e17/bin
y /opt/e17/sbin a nuestro PATH.
export
PATH=/opt/e17/bin:/opt/e17/sbin:$PATH |
Añadimos también lo siguiente para una
correcta compilación:
export
PKG_CONFIG_PATH=/opt/e17/lib64/pkgconfig:$PKG_CONFIG_PATH
|
Configuramos la variable de entorno XDG_CONFIG_DIRS para que E17 encuentre el menú de aplicaciones propio.
export XDG_CONFIG_DIRS=/etc/xdg:/opt/e17/etc/xdg:$XDG_CONFIG_DIRS |
Configuramos la variable de entorno XDG_DATA_DIRS,
requerida para que todos los entornos gráficos o aplicaciones
que trabajan con archivos desktop para generar sus respectivos
menús de aplicaciones (GNOME, LXPanel, etc.) puedan encontrar
los archivos desktop de las aplicaciones instaladas con E17. En el mismo archivo ~/.bashrc añadimos lo siguiente.
export XDG_DATA_DIRS=/usr/share/:/usr/local/share:$HOME/.local/share:/opt/e17/share:$XDG_DATA_DIRS |
Si queremos establecer una variable de entorno global del sistema,
abrimos un editor de texto y añadimos todo lo descrito
anteriormente,
#!/bin/sh
export
PATH=/opt/e17/bin:/opt/e17/sbin:$PATH
export
PKG_CONFIG_PATH=/opt/e17/lib64/pkgconfig:$PKG_CONFIG_PATH
export XDG_CONFIG_DIRS=/etc/xdg:/opt/e17/etc/xdg:$XDG_CONFIG_DIRS
export XDG_DATA_DIRS=/usr/share/:/usr/local/share:$HOME/.local/share:/opt/e17/share:$XDG_DATA_DIRS
|
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d"
|
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
3) Abrimos un editor de texto y añadimos lo siguiente, para crear el archivo de configuración de la ruta a los archivos de configuración de los servicios de E17, específicos para D-Bus. Lo que está en color rojo es la ruta.
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<servicedir>/opt/e17/share/dbus-1/services</servicedir>
</busconfig>
|
Lo guardamos con el nombre e17.conf, y lo instalamos en /etc/dbus-1/session.d y /etc/dbus-1/system.d.
$ su
# install -m644 e17.conf /etc/dbus-1/session.d
# install -m644 e17.conf /etc/dbus-1/system.d
|
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que
se ha compilado Enlightenment - E17
para la elaboración de este documento.
* GCC - (14.2.0) o Clang - (18.1.8)
* Meson - (1.5.1)
* Ninja - (1.12.1)
* Gawk - (5.3.0)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Automake - (1.17)
* Bison - (3.8.2)
* Flex - (2.6.4)
* Gettext - (0.22.5)
* Autoconf - (2.72)
* Pkg-config - (0.29.2)
* LuaJIT - (2.1)
Librerías de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibICE - (1.1.1)
LibX11 - (1.8.10)
LibXcomposite - (0.4.6)
LibXcursor - (1.2.2)
LibXdamage - (1.1.6)
LibXext - (1.3.6)
LibXfixes - (6.0.1)
LibXi - (1.8.1)
LibXinerama - (1.1.5)
LibXrandr - (1.5.4)
LibXrender - (0.9.11)
LibXScrnSaver - (1.2.4)
LibXtst - (1.2.4)
* BlueZ - (5.77)
* Curl - (8.9.1)
* D-Bus - (1.14.10)
* Fontconfig - (2.15.0)
* Freetype2 - (2.13.3)
* FriBidi - (1.0.14)
* Giflib - (5.2.2)
* GLib - (2.74.7)
* GnuTLS - (3.8.7.1)
* GStreamer - (1.24.7)
* Gst-plugins-base - (1.24.7)
* HarfBuzz - (9.0.0)
* Imlib2 - (1.12.3)
* JSON-C - (0.17)
* Libexif - (0.6.24)
* Libgcrypt - (1.11.0)
* Libglvnd - (1.7.0)
* Libinput - (1.26.0)
* Libjpeg-turbo - (3.0.3)
* Libmount - (2.40.2)
* Libpng - (1.6.43)
* LibRaw - (0.21.2)
* Librsvg - (2.58.3)
* Libsndfile - (1.2.2)
* Libspectre - (0.2.12)
* LibTIFF - (4.6.0)
* Libudev - (251)
* Libunwind - (1.8.1)
* Libwebp - (1.4.1)
* Libxkbcommon - (1.7.0)
* Libxml2 - (2.11.9)
* Lightmediascanner - (0.5.2)
* Lua - (5.4.7)
* OpenJPEG - (2.5.2)
* OpenSSL - (3.3.1)
* PAM - (1.6.0)
* Poppler - (24.08.0)
* PulseAudio - (17.0)
* Python - (2.7.18)
* Rlottie - (0.2)
* SDL - (1.2.15)
* Sqlite - (3.46.1)
* Udisks - (2.10.1)
* V4l-utils - (1.26.1)
* Zlib - (1.3.1)
Aplicaciones
* Valgrind - (3.23.0)
Descarga
Información sobre los paquetes |
Los paquetes han sido creados a partir de la última
revisión de código de las librerías y aplicaciones
del entorno, con fecha de 30-08-2024. Para reducir el tamaño
de los mismos, se han borrado los directorios '.git' de todos los
paquetes, además del
directorio 'doc' del paquete de las librerías efl.
El directorio e17/apps/e_modules, se ha recreado a partir del
directorio antiguo ubicado en el repositorio SVN, incluyendo los
módulos ubicados en el repositorio Git, y recuperando los
scripts de instalación del repositorio antiguo. Los
módulos no compilables han sido borrados y serán
incluidos en próximas revisiones si vuelven a ser
funcionales.
|
e17-dev-libs-30082024.tar.lz | e17-dev-apps-30082024.tar.lz
Firma Digital
e17-dev-libs-30082024.tar.lz.asc | e17-dev-apps-30082024.tar.lz.asc
Verificar la firma digital de los paquetes
$ gpg --import manualinux.asc
$ gpg --verify e17-dev-libs-30082024.tar.lz.asc e17-dev-libs-30082024.tar.lz
$ gpg --verify e17-dev-apps-30082024.tar.lz.asc e17-dev-apps-30082024.tar.lz
|
Extracción
$ tar axvf e17-dev-libs-30082024.tar.lz
$ tar axvf e17-dev-apps-30082024.tar.lz
|
Orden de Compilación
Librerías
01. e17/libs/efl
Aplicaciones
01. e17/apps/enlightenment
02. e17/apps/ephoto
03. e17/apps/ecrire
04. e17/apps/enjoy
05. e17/apps/terminology
06. e17/apps/econman
07. e17/apps/equate
08. e17/apps/rage
09. e17/apps/evisum
Establecer las variables de entorno para una
correcta compilación si tenemos instalado Entrance siguiendo
su manual
$
export PATH=/opt/e17/bin:$PATH |
Optimizaciones
$ export
{C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'
|
Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado.
* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.
* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
|
Valores |
CPU |
Genéricos |
generic |
Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2. |
native |
Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, AVX512*, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
arrowlake |
Intel Arrow Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
arrowlake-s |
Intel Arrow Lake S con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
atom |
Intel Atom con soporte de
instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell. |
bonnell |
Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
broadwell |
Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
cannonlake |
Intel Cannonlake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 8. |
clearwaterforest |
Intel Clearwater Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
cooperlake |
Intel Cooper Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 9. |
core2 |
Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3. |
core-avx2 |
Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell. |
core-avx-i |
Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge. |
corei7 |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem. |
corei7-avx |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16, AMX-FP16, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids-d |
Intel Granite Rapids D con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 17. |
haswell |
Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
i386 |
Intel i386.
|
i486 |
Intel i486. |
i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
i686 |
Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
icelake-client |
Intel Icelake Client con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
intel |
Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9. |
ivybridge |
Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
knl |
Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4. |
knm |
Intel Knights Mill con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER, AVX512CD, AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 6. |
lakemont |
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
lunarlake |
Intel Lunar Lake. Esta opción está disponible a partir de GCC 14 y es equivalente a la opción arrowlake-s. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
nehalem |
Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
nocona |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit. |
pantherlake |
Intel Panther Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
penryn |
Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1. |
pentiumpro |
Intel PentiumPro. |
pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
pentium-m |
Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino. |
pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 13. |
sandybridge |
Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sapphirerapids |
Intel Sapphire Rapids con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
silvermont |
Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sierraforest |
Intel Sierra Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
skylake |
Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6. |
skylake-avx512 |
Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
tigerlake |
Intel Tiger Lake con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
westmere |
Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
yonah |
Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
AMD |
amdfam10, barcelona |
Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6. |
athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
bdver1 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver2 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver3 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8 y Clang 3.4. |
bdver4 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.9 y Clang 3.5. |
btver1 |
Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6. |
btver2 |
Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8. |
geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3. |
k6 |
AMD K6 con soporte de instrucciones MMX. |
k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
k8, opteron, athlon64, athlon-fx |
Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit). |
k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3. |
znver1 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4. |
znver2 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, ,CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 9 y Clang 9. |
znver3 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 12.3 y Clang 16. |
znver5 |
Procesadores basados en AMD Family 1ah core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, PREFETCHI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
|
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
LTO |
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto
|
Clang |
Polly |
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
|
LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto' |
ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin' |
La aplicación de esta optimización es alternativa
a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma. |
Unified LTO |
LTO >> ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin' |
ThinLTO >> LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full' |
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD. |
Parámetros adicionales
Parámetros adicionales de eliminación de avisos en el proceso de compilación |
$ export {C,CXX}FLAGS+=' -w' |
Parámetros adicionales de eliminación de errores específicos en el proceso de compilación |
GCC 14 |
$ export {C,CXX}FLAGS+=' -Wno-int-conversion -Wno-implicit-function-declaration' |
Clang 15 y superiores |
$ export {C,CXX}FLAGS+=' -Wno-int-conversion' |
Clang 16 y superiores |
$ export {C,CXX}FLAGS+=' -Wno-implicit-function-declaration' |
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer el uso de enlazador dinámico para LLD |
Clang |
$ export LDFLAGS+=' -fuse-ld=lld' |
Optimizaciones complementarias LTO/ThinLTO de LLD |
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt' |
Optimizaciones complementarias LTO de LLD |
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr (nproc) / 2)" |
Optimizaciones complementarias ThinLTO de LLD |
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)" |
Establecer la variable de entorno de uso de compilador |
GCC |
$ export CC=gcc CXX=g++ |
Clang |
$ export CC=clang CXX=clang++ |
Compilar las
Librerías
01) /e17/libs/efl
$ meson build --prefix=/opt/e17 --buildtype=release -Dsystemd=false \
-Dbuild-{tests,examples}=false -Decore-imf-loaders-disabler="ibus,scim" --strip
$ ninja -C build
|
Parámetros de compilación opcionales
V=1 : Muestra más información en el proceso de compilación.
-v
: Muestra más información en el proceso de
compilación, cuando utilizamos el comando ninja para compilar paquetes cuyo sistema de compilación es Meson.
-j$(nproc) :
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación como root
$ su
# ninja -C build install
# update-mime-database /opt/e17/share/mime
# ldconfig -v
# exit
$ cd ../../apps/enlightenment |
Compilar las Aplicaciones
01) /e17/apps/enlightenment
$ meson build --prefix=/opt/e17 --buildtype=release --strip -Dsystemd=false
$ ninja -C build
|
Instalación como root
$ su
# ninja -C build install
# exit
$ cd ../e_modules
|
02) /e17/apps/e_modules
$ ./autogen.sh --prefix=/opt/e17 --disable-static --libdir=/opt/e17/lib64
$ make |
Instalación como root
$ su -c "make install-strip"
$ cd ../ephoto
|
En los módulos extramenu, forecast, penguins, places y
wallpaper2 se utiliza Meson para compilar dichos paquetes. Tendremos
que entrar en el directorio correspondiente y ejecutar el siguiente
comando:
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build
|
E instalarlos como root con el siguiente comando:
$ su -c "ninja -C build install"
|
03) /e17/apps/ephoto
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build
|
Instalación como root
$ su -c "ninja -C build install"
$ cd ../ecrire
|
04) /e17/apps/ecrire
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build |
Instalación como root
$ su -c "ninja -C build install"
$ cd ../enjoy
|
05) /e17/apps/enjoy
$ ./autogen.sh --prefix=/opt/e17 --libdir=/opt/e17/lib64
$ make
|
Instalación como root
$ su
# make install-strip
# ldconfig -v
# exit
$ cd ../terminology
|
06) /e17/apps/terminology
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build
|
Instalación como root
$ su -c "ninja -C build install"
$ cd ../econman
|
07) /e17/apps/econman
$ ./autogen.sh --prefix=/opt/e17
$ make
|
Instalación como root
$ su -c "make install"
$ cd ../equate
|
08) /e17/apps/equate
$ ./autogen.sh --prefix=/opt/e17
$ make
|
Instalación como root
$ su -c "make install-strip"
$ cd ../rage
|
09) /e17/apps/rage
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build
|
Instalación como root
$ su -c "ninja -C build install"
$ cd ../evisum
|
11) /e17/apps/evisum
$ meson build --prefix=/opt/e17 --buildtype=release --strip
$ ninja -C build
|
Instalación como root
$ su -c "ninja -C build install"
|
Borrar las locales adicionales instaladas
$ su
# for i in ar az_IR bg bs ca cs da de el en_GB eo et fa fi fo fr fr_CH gl he \
hi hr hu id it ja ka km ko ko_KR ku lt ms nb nb_NO nl pl ps pt pt_BR ro ru si sk sl \
sr sv th tr uk ur vi yi zh_CN zh_Hans zh_TW ; do \
rm -rf /opt/e17/share/locale/$i &> /dev/null ; \
rm -rf /opt/e17/lib64/enlightenment/modules/*/locale/$i &> /dev/null ; \
rmdir --ignore-fail-on-non-empty /opt/e17/lib64/enlightenment/modules/*/locale &> /dev/null ; \
done
|
Estadísticas de Compilación e Instalación de Enlightenment - E17
Estadísticas de Compilación e Instalación de Enlightenment - E17 |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Tarjeta gráfica |
AMD Radeon RX 580 2048SP |
Controlador de gráficos |
AMDGPU 23.0.0 |
Sistema de archivos |
XFS |
Versión del Kernel |
6.10.7-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.40 |
Enlazador dinámico |
LLD 18.1.8 |
Compilador |
Clang 18.1.8 + Ccache 4.10.2 |
Parámetros de optimización |
-03 -march=znver3
-mtune=znver3 -mllvm -polly -mllvm
-polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa
-Wl,--lto-newpm-passes=memcpyopt |
Parámetros de compilación |
(V=1 o -v) -j12 |
Ocupación de espacio en disco del proceso de compilación |
923,9 MB |
Tiempo de compilación |
1' 10" |
Archivos instalados |
4.239 |
|
Enlaces simbólicos creados |
163 |
|
Ocupación de espacio en disco |
489,0 MB |
Consumo inicial de CPU y RAM de Enlightenment - E17
Consumo inicial de CPU y RAM de Enlightenment - E17 |
Programa
|
CPU |
RAM |
enlightenment |
1 % |
108,7 MB |
efreetd |
0 % |
11,5 MB |
enlightenment_fm |
0 % |
6,8 MB |
enlightenment_start |
0 % |
0,9 MB |
TOTAL |
1 % |
127,9 MB |
Para medir el consumo de CPU se utiliza el programa top, y para medir
el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace. |
Parámetros
de configuración aplicados en la compilación de los
paquetes de código fuente de Enlightenment - E17 |
Parámetro |
Descripción |
--prefix=/opt/e17 |
Instala el entorno gráfico y sus aplicaciones en /opt/e17.
|
--buildtype=release |
Compila la versión optimizada del paquete, ya que Meson
compila por defecto los paquetes con los parámetros -O2 -g.
|
-Dsystemd=false |
Si nuestra distribución no utiliza systemd
para el inicio del sistema, tenemos que añadir este
parámetro, para una correcta configuración del paquete
correspondiente. |
-Decore-imf-loaders-disabler="ibus,scim" |
Desactiva el soporte de los métodos de entrada IBus y SCIM en el caso de que no los tengamos instalados, como es el mío, en la compilación de las librerías EFL. |
-Dbuild-{tests,examples}=false |
Desactiva la compilación de los tests y los archivos de ejemplo de las librerías EFL. |
--disable-static |
No compila las librerías estáticas para reducir espacio en disco. |
--strip |
Elimina los símbolos no
necesarios para su ejecución de los binarios ejecutables
correspondientes, cuando compilamos un paquete con Meson. |
--libdir=/opt/e17/lib64 |
Instala las librerías en /opt/e17/lib64,
en sistemas de 64 bits multiarquitectura. Con Meson no es necesario añadir esto. |
Comandos introducidos como usuario root en la compilación de los paquetes de código fuente de Enlightenment - E17 |
Comando |
Descripción |
make install |
Ejecuta el proceso de instalación del paquete. |
make install-strip |
Ejecuta
el proceso de instalación del paquete, eliminando los símbolos no
necesarios para su ejecución de los binarios ejecutables
correspondientes. |
ninja -C build install |
Ejecuta el proceso de
instalación del paquete utilizando el comando ninja en aquellos
procesos cuyo sistema de compilación es Meson. |
ldconfig -v |
Actualiza la caché
de las librerías compartidas del sistema, mostrando más
información en la ventana de terminal. |
exit |
Salimos de la sesión de consola como usuario root para volver a nuestro sesión de usuario. |
Directorios
de configuración personal
Enlightenment
- E17 |
~/.e/e |
Es
el directorio de configuración del entorno
gráfico. |
~/.e/e/applications |
Es
el directorio que contiene el menú de las
aplicaciones en formato desktop. |
~/.e/e/backgrounds |
Las
imágenes que importamos o creamos desde la ventana de
configuración del fondo del escritorio se guardan en
este directorio con la extensión .edj.
Además
también podemos copiar a este directorio todos los
fondos animados
y estáticos
creados por otros usuarios para E17. |
~/.e/e/config/profile.cfg |
Este
es el archivo de configuración del perfil por defecto que
utiliza E17,
podemos crear todos los perfiles que creamos conveniente desde el
módulo destinado a esta tarea. Cada perfil tendrá
su directorio de configuración personalizado. El
que viene
a
continuación es el que se utiliza por defecto. |
~/.e/e/config/default |
Es el directorio de configuración del perfil estándar de uso del programa. Toda
la configuración de E17
y los módulos se guardan en este directorio,
además del historial del
lanzador de aplicaciones. Si tenemos problemas con el funcionamiento
del entorno, sólo tendremos que borrar el archivo de
configuración e.cfg y
el mismo se iniciará como si fuera la primera vez que lo
ejecutamos. |
~/.e/e/fileman |
Es
el directorio de configuración del administrador de
archivos que viene con E17. |
~/.e/e/fonts |
Es
el directorio donde se guardan nuestras fuentes de texto personalizadas. |
~/.e/e/icons |
Es
el directorio donde se guardan nuestros iconos personalizados
para
poder utilizarlos en los menús correspondientes. Especial
atención a los iconos
animados en formato .edj que tendremos que copiarlos a este
subdirectorio también. |
~/.e/e/init |
En
este directorio podemos copiar los temas que existen para la
pantalla de inicio de E17,
para luego seleccionarlos en el módulo de
configuración respectivo. |
~/.e/e/themes |
Es
el directorio donde tenemos que copiar los temas de E17
disponibles en la red. Cada vez que vayamos a actualizar el entorno
siguiendo este manual, no olvidar nunca activar el tema por defecto, no
sería la primera vez (a mí me ha pasado) que al
iniciar
el entorno actualizado nos encontramos con que el tema de turno no
funciona y E17 se
queda colgado. Tendríamos que borrar el archivo de
configuración ~/.e/e/config/default/e.cfg
para volver a la normalidad. |
~/.config/ephoto |
Es
el directorio de configuración del visualizador de imágenes Ephoto. |
~/.config/enjoy |
Es
el directorio de configuración del reproductor musical Enjoy. |
~/.config/rage |
Es
el directorio de configuración del reproductor multimedia Rage. |
~/.config/evisum |
Es
el directorio de configuración del gestor de tareas Evisum. |
~/.config/terminology |
Es
el directorio de configuración del emulador de terminal Terminology. |
Desinstalación
como root
1)
MODO TRADICIONAL
En los directorios de compilación de
todos los
programas y librerías ejecutamos el siguiente comando:
2)
MODO MANUALINUX
e17-dev-scripts.tar.gz
$ su
# tar zxvf e17-dev-scripts.tar.gz
# cd e17-dev-scripts
# ./Desinstalar_e17-dev |
En la desinstalación se incluyen todos los paquetes
instalados en /opt/e17.
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf e17-dev-scripts.tar.gz
# cd e17-dev-scripts
# ./Respaldar_e17-dev |
Restaurar la Copia de
Seguridad
como root
Y con este otro script (que se copia de forma automática
cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_e17-dev
|
Configurar
el inicio de
Enlightenment - E17
1) Para los que inician X desde
terminal con el comando startx
Editamos el archivo ~/.xinitrc que se
encuentra en nuestro home,
si no existe lo creamos, y añadimos lo siguiente:
exec /opt/e17/bin/enlightenment_start
|
2) XDM
Editamos el archivo ~/.xsession que se
encuentra en nuestro home,
si no existe lo creamos, y añadimos lo siguiente:
exec /opt/e17/bin/enlightenment_start |
3) GDM/LightDM/SDDM
Creamos un enlace simbólico de /opt/e17/share/xsessions/enlightenment.desktop a /usr/share/xsessions:
$ su -c "ln -s /opt/e17/share/xsessions/enlightenment.desktop /usr/share/xsessions"
|
4) Qingy
Abrimos un editor de texto y añadimos lo siguiente:
/opt/e17/bin/enlightenment_start |
Lo guardamos con el nombre E17, y lo instalamos en /etc/qingy/Xsessions.
$ su -c "install -m755 E17 /etc/qingy/Xsessions"
|
5) SLiM
Primero editamos el archivo /etc/slim.conf
y añadimos el nombre del entorno a la lista de los que
tengamos
en el sistema instalados, si queremos que sea el entorno que se inicie
por defecto hay que colocarlo en el primer lugar de la lista.
# Sesiones disponibles (la primera es la predefinida).
# El actual nombre de sesión es reemplazado en el login_cmd
# anterior, para que su comando de acceso pueda manejar diferentes sesiones.
# vea el archivo xinitrc.ejemplo proporcionado con el código fuente de slim.
sessions
Fluxbox,WindowMaker,Blackbox,XFce4,E17,E16,IceWM,Openbox,ROX,Pekwm,AfterStep |
Para finalizar editamos el archivo .xinitrc de nuestro home y añadimos la configuración del mismo, la variable DEFAULT_SESSION sobreescribe el entorno gráfico de inicio predefinido que pueda existir en el archivo /etc/slim.conf,
permitiendo añadir el ejecutable de otro entorno que no
esté configurado en el apartado anterior para ser iniciado por
defecto, si queremos que sea Enlightenment - E17, añadimos su script de ejecución, aunque si lo tenemos configurado el primero de la lista, esto no es necesario.
# La siguiente variable define la sesión que será iniciada si el usuario
# no elige de forma explícita una sesión
DEFAULT_SESSION=enlightenment_start
case
$1 in
XFce4)
exec startxfce4
;;
IceWM)
exec icewm-session
;;
WindowMaker)
exec wmaker
;;
Blackbox)
exec startblackbox
;;
Fluxbox)
exec startfluxbox
;;
E17)
exec enlightenment_start
;;
E16)
exec starte16
;;
Openbox)
exec openbox-session
;;
Pekwm)
exec pekwm
;;
ROX)
exec rox-session
;;
AfterStep)
exec afterstep
;;
*)
exec $DEFAULT_SESSION
;;
esac |
Con pulsar F1 ya
podremos seleccionarlo de la lista e iniciarlo, si es el predefinido no
es necesario seleccionarlo de la lista, se iniciará por defecto.
Iniciamos
Enlightenment - E17
Nota importante |
Si tenemos desactivada la extensión XComposite siguiendo
las instrucciones explicadas en la sección
correspondiente del manual de Fluxbox,
tendremos que comentar dicha opción, ya que Enlightenment - E17
requiere del uso de esta extensión para su
ejecución.
|
Enlaces
http://www.enlightenment.org >> La
web de Enlightenment - E17.
http://www.enlightenment-themes.org >> Temas y recursos.
Tema E17-GTK
Tema E17-GTK-Green&Blue
Tema E17-GTK-MoreBlue&LessGold
Tema E17-GTK-Blue&Gold
https://www.elivecd.org >> Web de la distribución Elive que
permite comprobar las
características de E17 sin
necesidad de instalarlo en el
disco
duro, iniciándolo desde el cd.
|