Jaka jest poprawna składnia, aby dodać CFLAGS i LDFLAGS w celu „skonfigurowania”?

40

Chciałbym zainstalować OpenVPN na OpenBSD 5.5 przy użyciu tarballa źródłowego OpenVPN.

Zgodnie z instrukcjami tutaj muszę zainstalować Lzo i

dodaj CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" do 'config', ponieważ gcc nie znajdzie ich inaczej.

Poszukałem obszernie instrukcji, jak zrobić powyższe na OpenBSD, ale nie ma żadnej.

Oto co planuję zrobić:

  1. Rozpakuj źródłowy plik archiwum do świeżo utworzonego katalogu
  2. Wydaj polecenie ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Wydaj polecenie make
  4. Wydaj polecenie make install

Która z poniższych składni jest poprawna?

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

lub

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

lub

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"
user66229
źródło

Odpowiedzi:

41

Prawidłowy sposób to:

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

ale to może nie działać ze wszystkimi configureskryptami. Prawdopodobnie lepiej jest ustawić zmienne środowiskowe takie jak CPATHi LIBRARY_PATH(patrz gccstrona podręcznika man).

Przykład:

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

.profilena przykład w twoim . LD_LIBRARY_PATHMogą być potrzebne w przypadku bibliotek współdzielonych, jeśli ścieżka bieg nie jest używany (to zależy od systemu operacyjnego, narzędzia budowania i opcje, które są używane, ale to nie powinno boleć).

vinc17
źródło
Dzięki za odpowiedź. Czy gcc jest instalowane domyślnie w podstawowym systemie OpenBSD 5.5? Jeśli tak nie jest, nie zamierzam instalować pakietu innej firmy, ponieważ może on zawierać błędy lub luki w zabezpieczeniach.
user66229,
1
@ user66229 jeśli wykonałeś domyślną instalację, to tak, gcc-4.2.1(chyba że używasz naprawdę starych komputerów, takich jak vaxen) comp55.tgz. Istnieją pakiety dla gcc-4.8i 4.9, a także llvm/clang 3.0. Te pierwsze nie są uwzględnione głównie ze względów licencyjnych (GPLv2 vs GPLv3), te drugie nie są używane, ponieważ nie obsługują wszystkich platform obsługiwanych obecnie przez OpenBSD.
damien
1
@ user66229 Zredagowałem swoją odpowiedź. To tylko przykład, mogą istnieć inne sposoby, a możesz już mieć pewne ustawienia. Najpierw sprawdź za pomocą echo $CPATHitd.
vinc17
1
Dzięki za komentarz „ale to może nie działać ze wszystkimi skryptami konfiguracyjnymi” - właśnie natknąłem się na przypadek, w którym po kilku zależnościach skompilowanych z CFLAGS, ostatnia zależność ulega awarii, gdy CFLAGS jest określony (i rzeczywiście grep CFLAGS configurezwraca puste z tego skryptu konfiguracji) .
sdaau
1
Byłbym bardzo ostrożny z LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee
8

Pierwsza składnia jest poprawna.

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

Jednak zdecydowanie zaleca się korzystanie z plików binarnych packages(7)lub, jeśli z jakiegokolwiek powodu absolutnie musisz budować ze źródła, skorzystaj z ports(7)infrastruktury, jak wyjaśniono w sekcji FAQ 15 .

Skonfiguruj drzewo portów, jak opisano w FAQ. Następnie poszukaj openvpnportu:

cd /usr/ports
make search key=openvpn

Spowoduje to wygenerowanie szeregu portów zawierających ten termin openvpn. Jednym z nich jest openvpn-2.3.2ścieżka net/openvpn.

cd net/openvpn
sudo make install clean

Będzie to miało tę zaletę, że zależności (tylko tutaj lzo2) zostaną poprawnie zainstalowane bez blokowania systemu, a otrzymasz dodatkowe instrukcje dotyczące korzystania openvpnz OpenBSD.

użytkownik80301
źródło
Dzięki za odpowiedź. OpenBSD 5.5 ma już pakiet OpenVPN (binarny), ale jest stary w wersji 2.3.2. Chcę skompilować i zainstalować najnowszą wersję 2.3.4, która jest dostępna tylko z GitHub OpenVPN.
user66229,
Jak wspomniałeś lzo, zauważyłem, że dostępne są trzy pakiety binarne: lzo-1.08p3.tgz, lzo2-2.06p0.tgz i lzop-1.03.tgz. Która z tych 3 jest zależnością dla OpenVPN?
user66229,
1
@ user66229: To by było lzo2-2.06p0.tgz. Oto łatka, która aktualizuje port openvpnz 2.3.2do 2.3.4, ale między dwiema wersjami prawie nie ma zmiany dotyczącej OpenBSD (przeczytaj cały wątek). Chciałbym bardzo, bardzo polecam, że po prostu przejść z pakietu binarnego.
damien
@damien Dziękujemy za odpowiedź i link do łatki. Przeczytałem zawartość łatki i martwiłem się tym, że w OpenBSD dla OpenVPN nie ma opiekuna . Pomóż mi odgadnąć odpowiedź, w jaki sposób pakiet binarny openvpn-2.3.2.tgztrafił do oficjalnych kopii lustrzanych OpenBSD?
user66229,
1
@ user66229 tutaj możesz zobaczyć całą listę zmian dla pliku Makefile portu. Jak powiedział Stuart Henderson (jeden z głównych opiekunów pakietów) w tym wątku, niewiele z tych zmian w rzeczywistości dotyczy OpenBSD.
damien