Quelle est la syntaxe correcte pour ajouter CFLAGS et LDFLAGS à «configurer»?

41

Je souhaite installer OpenVPN sur OpenBSD 5.5 en utilisant le fichier source OpenVPN.

Selon les instructions ici , je dois installer lzo et

add CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" à "configurer", car gcc ne les trouvera pas autrement.

J’ai longuement cherché dans Googled un guide sur la manière de faire ce qui précède sur OpenBSD, mais il n’en existe pas.

C'est ce que je prévois de faire:

  1. Décompresser l'archive source dans un répertoire récemment créé
  2. Exécutez la commande ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Émettre la commande make
  4. Émettez la commande make install

Laquelle des syntaxes suivantes est correcte?

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

ou

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

ou

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

Réponses:

41

La manière correcte est:

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

mais cela peut ne pas fonctionner avec tous les configurescripts. Il est probablement préférable de définir des variables d'environnement telles que CPATHet LIBRARY_PATH(voir la gccpage de manuel).

Un exemple:

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

dans votre .profile, par exemple. Le LD_LIBRARY_PATHpeut être nécessaire en cas de bibliothèques partagées si un chemin d'exécution n'est pas utilisé (cela dépend du système d' exploitation, les outils de construction et les options qui sont utilisées, mais il ne devrait pas faire du mal).

vinc17
la source
Merci pour votre réponse. Est-ce que gcc est installé par défaut dans le système de base d'OpenBSD 5.5? Si ce n'est pas le cas, je ne vais pas installer de package tiers, car il pourrait contenir des bogues ou des vulnérabilités en matière de sécurité.
user66229
1
@ user66229 si vous avez effectué une installation par défaut, alors oui gcc-4.2.1(sauf si vous utilisez de très vieilles machines comme vaxen) est présent comp55.tgz. Il y a des paquets pour gcc-4.8et 4.9, et aussi llvm/clang 3.0. Les premiers ne sont pas inclus principalement pour des raisons de licence (GPLv2 vs GPLv3), le dernier n'est pas utilisé car il ne supporte pas toutes les plateformes actuellement prises en charge par OpenBSD.
Damien
1
@ user66229 J'ai modifié ma réponse. Ceci est juste un exemple, il peut y avoir d'autres moyens de le faire, et vous pouvez déjà avoir certains paramètres. Vérifiez d'abord avec echo $CPATHet ainsi de suite.
vinc17
1
Merci pour le commentaire "mais cela peut ne pas fonctionner avec tous les scripts de configuration" - je viens de rencontrer un cas où, après plusieurs dépendances compilées avec CFLAGS, la dernière dépendance se bloque lorsque CFLAGS est spécifié (et grep CFLAGS configurerenvoie en effet un blanc à partir de ce script de configuration) .
sdaau
1
Je serais très prudent avec LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
Skalee
8

La première syntaxe est correcte.

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

Cependant, il est fortement recommandé d'utiliser binaire packages(7)ou, si pour quelque raison que ce soit, vous devez absolument compiler à partir des sources, utilisez l' ports(7)infrastructure, comme expliqué dans la section FAQ 15 .

Configurez l’arbre des ports comme indiqué dans la FAQ. Ensuite, cherchez un openvpnport:

cd /usr/ports
make search key=openvpn

Cela produira un nombre de ports contenant le terme openvpn. L'un d'eux est openvpn-2.3.2avec chemin net/openvpn.

cd net/openvpn
sudo make install clean

Cela aura pour avantage que les dépendances (ici uniquement lzo2) seront correctement installées sans endommager votre système et que vous obtiendrez des instructions supplémentaires sur la façon d'utiliser openvpnOpenBSD.

utilisateur80301
la source
Merci pour votre réponse. OpenBSD 5.5 a déjà un paquet OpenVPN (binaire) mais il est ancien à la version 2.3.2. Je souhaite compiler et installer la dernière version 2.3.4, disponible uniquement à partir de GitHub d'OpenVPN.
user66229
Comme vous l'avez mentionné, j'ai remarqué qu'il existe trois packages binaires: lzo-1.08p3.tgz, lzo2-2.06p0.tgz et lzop-1.03.tgz. Lequel de ces 3 est la dépendance pour OpenVPN?
user66229
1
@ user66229: Ce serait lzo2-2.06p0.tgz. Voici un correctif qui met à jour le port de openvpnde 2.3.2à 2.3.4, mais il n’ya guère de changement pertinent pour OpenBSD entre les deux versions (lisez le fil de discussion entier). Je recommanderais vraiment, vraiment, d’ utiliser le paquet binaire.
Damien
@damien Merci pour votre réponse et le lien vers le correctif. J'ai lu le contenu du correctif et ce qui m'a inquiété, c'est qu'il n'y a pas de mainteneur chez OpenBSD pour OpenVPN . Aidez-moi à deviner la réponse du paquet binaire openvpn-2.3.2.tgzaux miroirs de téléchargement officiels d’OpenBSD.
user66229
1
@ user66229 ici vous pouvez voir la liste de révision complète pour le Makefile du port. Comme Stuart Henderson (l'un des principaux responsables du paquet) a déclaré dans ce fil de discussion, peu de ces modifications sont réellement pertinentes pour OpenBSD.
Damien