Was ist die richtige Syntax, um CFLAGS und LDFLAGS zu "configure" hinzuzufügen?

40

Ich möchte OpenVPN unter OpenBSD 5.5 mit dem OpenVPN-Quell-Tarball installieren.

Entsprechend der Anleitung hier muss ich lzo und installieren

Fügen Sie CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" zu "configure" hinzu, da gcc sie sonst nicht findet.

Ich habe ausgiebig nach Anleitungen gegoogelt, wie man das oben genannte unter OpenBSD macht, aber es gibt keine.

Das habe ich vor:

  1. Entpacken Sie den Quell-Tarball in ein neu erstelltes Verzeichnis
  2. Setzen Sie den Befehl ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" ab.
  3. Setzen Sie den Befehl make ab
  4. Setzen Sie den Befehl make install ab

Welche der folgenden Syntax ist richtig?

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

oder

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

oder

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

Antworten:

41

Der richtige Weg ist:

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

Dies funktioniert jedoch möglicherweise nicht mit allen configureSkripten. Es ist wahrscheinlich besser, Umgebungsvariablen wie CPATHund LIBRARY_PATHfestzulegen (siehe gccManpage).

Ein Beispiel:

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

in deinem .profilezum Beispiel. Das LD_LIBRARY_PATHkann im Fall von Shared Libraries erforderlich sein , wenn ein Laufpfad nicht verwendet wird (dies hängt von dem O, die Build - Tools und die Optionen , die verwendet werden, aber es sollte nicht schaden).

vinc17
quelle
Danke für deine Antwort. Ist gcc standardmäßig im Basissystem von OpenBSD 5.5 installiert? Wenn nicht, werde ich kein Drittanbieterpaket installieren, da es Fehler oder Sicherheitslücken enthalten kann.
user66229
1
@ user66229 wenn du eine standardinstallation gemacht hast dann ist ja gcc-4.2.1(es sei denn du bist auf wirklich alten maschinen wie vaxen) in comp55.tgz. Es gibt Pakete für gcc-4.8und 4.9und auch llvm/clang 3.0. Ersteres ist hauptsächlich aus Lizenzgründen nicht enthalten (GPLv2 vs GPLv3), letzteres wird nicht verwendet, da es nicht alle Plattformen unterstützt, die OpenBSD derzeit unterstützt.
Damien
1
@ user66229 Ich habe meine Antwort bearbeitet. Dies ist nur ein Beispiel. Möglicherweise gibt es andere Möglichkeiten, dies zu tun, und möglicherweise sind bereits einige Einstellungen vorhanden. Überprüfen Sie zuerst mit echo $CPATHund so weiter.
Vinc17
1
Vielen Dank für den Kommentar "Aber dies funktioniert möglicherweise nicht mit allen Konfigurationsskripten". Ich bin gerade auf einen Fall gestoßen, in dem nach mehreren mit CFLAGS kompilierten Abhängigkeiten die letzte Abhängigkeit abstürzt, wenn CFLAGS angegeben wird (und in der Tat grep CFLAGS configurevon diesem Konfigurationsskript nichts zurückgibt). .
Sdaau
1
Ich wäre sehr vorsichtig mit LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
Skalee
8

Die erste Syntax ist korrekt.

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

Es wird jedoch dringend empfohlen, entweder Binärdateien zu verwenden packages(7)oder, aus welchen Gründen auch immer, die ports(7)Infrastruktur zu verwenden, wie in Abschnitt 15 der häufig gestellten Fragen erläutert .

Richten Sie den Ports-Baum wie in den FAQ beschrieben ein. Dann suchen Sie nach einem openvpnHafen:

cd /usr/ports
make search key=openvpn

Dies gibt eine Anzahl von Ports aus, die den Begriff enthalten openvpn. Einer von ihnen ist openvpn-2.3.2mit Pfad net/openvpn.

cd net/openvpn
sudo make install clean

Dies hat den Vorteil, dass die Abhängigkeiten (nur hier lzo2) korrekt installiert werden, ohne Ihr System zu überlasten, und Sie erhalten zusätzliche Anweisungen zur Verwendung openvpnunter OpenBSD.

user80301
quelle
Danke für deine Antwort. OpenBSD 5.5 hat bereits ein OpenVPN (Binär) -Paket, ist aber in Version 2.3.2 veraltet. Ich möchte die neueste Version 2.3.4 kompilieren und installieren, die nur von OpenVPNs GitHub erhältlich ist.
User66229
Wie Sie bereits erwähnt haben, habe ich festgestellt, dass drei Binärpakete verfügbar sind: lzo-1.08p3.tgz, lzo2-2.06p0.tgz und lzop-1.03.tgz. Welches dieser 3 ist die Abhängigkeit von OpenVPN?
user66229
1
@ user66229: Das wäre lzo2-2.06p0.tgz. Hier ist ein Patch , der den Port openvpnvon 2.3.2auf aktualisiert 2.3.4, aber es gibt kaum eine OpenBSD-relevante Änderung zwischen den beiden Versionen (lies den gesamten Thread). Ich würde wirklich wirklich empfehlen, dass Sie nur mit dem Binärpaket gehen.
Damien
@damien Danke für deine Antwort und den Link zum Patch. Ich habe den Inhalt des Patches gelesen und mir Sorgen gemacht, dass es bei OpenBSD für OpenVPN keinen Betreuer gibt . Bitte helfen Sie mir, die Antwort zu erraten, wie das Binärpaket openvpn-2.3.2.tgzauf die offiziellen Download-Mirrors von OpenBSD gelangt ist.
user66229
1
@ user66229 hier siehst du die gesamte revisionsliste für das makefile des ports . Wie Stuart Henderson (einer der wichtigsten Paketbetreuer) in diesem Thread sagte, sind nicht viele dieser Änderungen tatsächlich für OpenBSD relevant.
Damien