¿Cuál es la sintaxis correcta para agregar CFLAGS y LDFLAGS para "configurar"?

41

Deseo instalar OpenVPN en OpenBSD 5.5 usando el tarball fuente de OpenVPN.

De acuerdo con las instrucciones aquí , tengo que instalar lzo y

agregue las directivas CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" a "configure", ya que gcc no las encontrará de otra manera.

He buscado en Google extensamente para obtener una guía sobre cómo hacer lo anterior en OpenBSD, pero no hay ninguno.

Esto es lo que planeo hacer:

  1. Descomprima el tarball de origen en un directorio recién creado
  2. Emita el comando ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Emita el comando make
  4. Emita el comando make install

¿Cuál de las siguientes sintaxis es correcta?

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

o

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

o

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"
usuario66229
fuente

Respuestas:

41

La forma correcta es:

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

pero esto puede no funcionar con todos los configurescripts. Probablemente sea mejor establecer variables de entorno como CPATHy LIBRARY_PATH(consulte la gccpágina de manual).

Un ejemplo:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

en tu .profile, por ejemplo. El LD_LIBRARY_PATHpuede ser necesaria en el caso de las bibliotecas compartidas si no se utiliza una ruta de ejecución (esto depende del sistema operativo, las herramientas de construcción y las opciones que se utilizan, pero no debe ser doloroso).

vinc17
fuente
Gracias por tu respuesta. ¿Se instala gcc por defecto en el sistema base de OpenBSD 5.5? Si no es así, no voy a instalar un paquete de terceros, ya que puede contener errores o vulnerabilidades de seguridad.
user66229
1
@ user66229 si realizó una instalación predeterminada, entonces sí, gcc-4.2.1(a menos que esté en máquinas realmente viejas como vaxen) está en comp55.tgz. Hay paquetes para gcc-4.8y 4.9, y también llvm/clang 3.0. Los primeros no se incluyen principalmente por razones de licencia (GPLv2 vs GPLv3), el segundo no se utiliza porque no es compatible con todas las plataformas que admite actualmente OpenBSD.
damien
1
@ user66229 He editado mi respuesta. Este es solo un ejemplo, puede haber otras formas de hacerlo y es posible que ya tenga algunas configuraciones. Verifique primero con echo $CPATHy así sucesivamente.
vinc17
1
Gracias por el comentario "pero esto puede no funcionar con todos los scripts de configuración": acabo de encontrar un caso en el que, después de varias dependencias compiladas con CFLAGS, la última dependencia se bloquea cuando se especifica CFLAGS (y de hecho, grep CFLAGS configurevuelve en blanco desde ese script de configuración) .
sdaau
1
Tendría mucho cuidado con LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee
8

La primera sintaxis es correcta.

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

Sin embargo, se recomienda encarecidamente usar binario packages(7)o, si por alguna razón es absolutamente necesario construir desde la fuente, hacer uso de la ports(7)infraestructura, como se explica en la sección 15 de preguntas frecuentes .

Configure el árbol de puertos como se detalla en las preguntas frecuentes. Luego busque un openvpnpuerto:

cd /usr/ports
make search key=openvpn

Esto generará una cantidad de puertos que contienen el término openvpn. Uno de ellos es openvpn-2.3.2con camino net/openvpn.

cd net/openvpn
sudo make install clean

Esto tendrá el beneficio de que las dependencias (solo aquí lzo2) se instalarán correctamente sin bloquear su sistema y obtendrá instrucciones adicionales sobre cómo usar openvpnOpenBSD.

usuario80301
fuente
Gracias por tu respuesta. OpenBSD 5.5 ya tiene un paquete OpenVPN (binario) pero es antiguo en la versión 2.3.2. Deseo compilar e instalar la última versión 2.3.4, que solo está disponible en GitHub de OpenVPN.
user66229
Como mencionó lzo, noté que hay tres paquetes binarios disponibles: lzo-1.08p3.tgz, lzo2-2.06p0.tgz y lzop-1.03.tgz. ¿Cuál de estos 3 es la dependencia de OpenVPN?
user66229
1
@ user66229: Eso sería lzo2-2.06p0.tgz. Aquí hay un parche que actualiza el puerto de openvpnpartir 2.3.2a 2.3.4, pero casi no hay un cambio relevante para OpenBSD entre las dos versiones (leer todo el hilo). Yo realmente, realmente recomendar que se acaba de ir con el paquete binario.
damien
@damien Gracias por su respuesta y el enlace al parche. Leí el contenido del parche y lo que me preocupó es el hecho de que no hay mantenedor en OpenBSD para OpenVPN . Por favor, ayúdame a adivinar la respuesta sobre cómo el paquete binario openvpn-2.3.2.tgzllegó a los espejos de descarga oficiales de OpenBSD.
user66229
1
@ user66229 aquí puede ver la lista completa de revisiones para el Makefile del puerto. Como dijo Stuart Henderson (uno de los principales mantenedores de paquetes) en ese hilo, no muchos de esos cambios son realmente relevantes para OpenBSD.
damien