Qual è la sintassi corretta per aggiungere CFLAGS e LDFLAGS per "configurare"?


41

Vorrei installare OpenVPN su OpenBSD 5.5 usando il tarball di origine OpenVPN.

Secondo le istruzioni qui , devo installare lzo e

aggiungi CFLAGS = "- I / usr / local / include le direttive" LDFLAGS = "- L / usr / local / lib" per "configurare", poiché gcc non le troverà diversamente.

Ho cercato su Google ampiamente per la guida su come fare quanto sopra su OpenBSD, ma non c'è nessuno.

Questo è quello che ho intenzione di fare:

  1. Decomprimi il tarball di origine in una directory appena creata
  2. Emettere il comando ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Emettere il comando make
  4. Emettere il comando make install

Quale delle seguenti sintassi è corretta?

./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"

Risposte:


41

Il modo corretto è:

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

ma questo potrebbe non funzionare con tutti gli configurescript. Probabilmente è meglio impostare variabili d'ambiente come CPATHe LIBRARY_PATH(vedere la gccpagina man).

Un esempio:

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

nel tuo .profile, per esempio. La LD_LIBRARY_PATHpuò essere necessario in caso di librerie condivise se un percorso di corsa non viene utilizzato (questo dipende dal sistema operativo, gli strumenti di costruzione e le opzioni che vengono utilizzati, ma non dovrebbe male).


Grazie per la tua risposta. Gcc è installato di default nel sistema base di OpenBSD 5.5? In caso contrario, non installerò un pacchetto di terze parti poiché potrebbe contenere bug o vulnerabilità della sicurezza.
user66229

1
@ user66229 se hai fatto un'installazione predefinita allora sì, gcc-4.2.1(a meno che tu non sia su macchine molto vecchie come vaxen) è dentro comp55.tgz. Ci sono pacchetti per gcc-4.8e 4.9, e anche llvm/clang 3.0. I primi non sono inclusi principalmente per motivi di licenza (GPLv2 vs GPLv3), il secondo non viene utilizzato perché non supporta tutte le piattaforme attualmente supportate da OpenBSD.
Damiano,

1
@ user66229 Ho modificato la mia risposta. Questo è solo un esempio, potrebbero esserci altri modi per farlo e potresti avere già alcune impostazioni. Verifica prima con echo $CPATHe così via.
vinc17,

1
Grazie per il commento "ma questo potrebbe non funzionare con tutti gli script di configurazione" - Mi sono appena imbattuto in un caso in cui, dopo diverse dipendenze compilate con CFLAGS, l'ultima dipendenza si arresta in modo anomalo quando viene specificato CFLAGS (e in effetti, grep CFLAGS configurerestituisce vuoto da quello script di configurazione) .
sdaau,

1
Starei molto attento con LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee

8

La prima sintassi è corretta.

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

Tuttavia, si consiglia vivamente di utilizzare binario packages(7)o, se per qualsiasi motivo è assolutamente necessario compilare da sorgente, utilizzare l' ports(7)infrastruttura, come spiegato nella sezione 15 delle FAQ .

Configurare l'albero delle porte come descritto nelle FAQ. Quindi cerca una openvpnporta:

cd /usr/ports
make search key=openvpn

Questo produrrà un numero di porte contenenti il ​​termine openvpn. Uno di questi è openvpn-2.3.2con percorso net/openvpn.

cd net/openvpn
sudo make install clean

Ciò avrà il vantaggio che le dipendenze (solo qui lzo2) verranno installate correttamente senza ostruire il sistema e riceverai ulteriori istruzioni su come utilizzare openvpnOpenBSD.


Grazie per la tua risposta. OpenBSD 5.5 ha già un pacchetto OpenVPN (binario) ma è vecchio alla versione 2.3.2. Vorrei compilare e installare l'ultima versione 2.3.4 che è disponibile solo da GitHub di OpenVPN.
user66229

Come hai detto lzo, ho notato che sono disponibili tre pacchetti binari: lzo-1.08p3.tgz, lzo2-2.06p0.tgz e lzop-1.03.tgz. Quale di questi 3 è la dipendenza per OpenVPN?
user66229

1
@ user66229: Sarebbe lzo2-2.06p0.tgz. Ecco una patch che aggiorna la porta di openvpnda 2.3.2a 2.3.4, ma non c'è quasi nessuna modifica rilevante per OpenBSD tra le due versioni (leggi l'intero thread). Consiglierei davvero, davvero di andare con il pacchetto binario.
Damiano,

@damien Grazie per la risposta e il collegamento alla patch. Ho letto il contenuto della patch e ciò che mi ha preoccupato è il fatto che non esiste un manutentore di OpenBSD per OpenVPN . Per favore, aiutatemi a indovinare la risposta su come il pacchetto binario è openvpn-2.3.2.tgzarrivato ai mirror di download ufficiali di OpenBSD?
user66229

1
@ user66229 qui puoi vedere l'intero elenco delle revisioni per il Makefile della porta. Come ha detto Stuart Henderson (uno dei principali manutentori del pacchetto) in quel thread, non molte di queste modifiche sono effettivamente rilevanti per OpenBSD.
Damiano,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.