Який правильний синтаксис додати CFLAGS та LDFLAGS до "налаштування"?


40

Я хочу встановити OpenVPN на OpenBSD 5.5 за допомогою тарболу з вихідним кодом OpenVPN.

Відповідно до інструкцій тут , я повинен встановити lzo і

додати CFLAGS = "- I / usr / local / включати" LDFLAGS = "- L / usr / local / lib" директиви для "налаштування", оскільки gcc не знайде їх інакше.

Я широко розглядав гугл для керівництва, як зробити вищезазначене на OpenBSD, але його немає.

Це те, що я планую зробити:

  1. Зніміть джерело tarball у щойно створеному каталозі
  2. Випустіть команду ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Видайте команду make
  4. Видайте команду make install

Який із наведених синтаксисів є правильним?

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

або

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

або

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

Відповіді:


41

Правильний спосіб:

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

але це може не працювати зі всіма configureсценаріями. Можливо, краще встановити змінні середовища, такі як CPATHта LIBRARY_PATH(див. gccСторінку людини).

Приклад:

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

наприклад, у вашому .profile. LD_LIBRARY_PATHМоже знадобитися в разі поділюваних бібліотек , якщо шлях запуску не використовується (це залежить від операційної системи, інструменти розробки і варіанти, які використовуються, але це не повинно бути боляче).


Дякую за вашу відповідь. Чи встановлено gcc за замовчуванням у базовій системі OpenBSD 5.5? Якщо це не так, я не збираюся встановлювати сторонній пакет, оскільки він може містити помилки або вразливості безпеки.
користувач66229

1
@ user66229 якщо ви встановили за замовчуванням, то так, gcc-4.2.1(якщо ви не працюєте на дуже старих машинах, таких як vaxen) comp55.tgz. Є пакети для gcc-4.8і 4.9, і також llvm/clang 3.0. Перші не включаються в основному з ліцензійних причин (GPLv2 проти GPLv3), останні не використовуються, оскільки не підтримують усі платформи, які OpenBSD підтримує в даний час.
Дамієн

1
@ user66229 Я відредагував свою відповідь. Це лише приклад, можуть бути й інші способи, і ви, можливо, вже маєте деякі налаштування. Перевірте спочатку echo $CPATHі так далі.
vinc17

1
Дякую за коментар "але це може не працювати зі всіма сценаріями налаштування" - я просто зіткнувся з випадком, коли після кількох залежностей, складених CFLAGS, остання залежність руйнується, коли CFLAGS задається (і справді grep CFLAGS configureповертається порожнім із цього сценарію налаштування) .
sdaau

1
Я був би дуже обережний із LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee

8

Перший синтаксис правильний.

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

Однак настійно рекомендується або використовувати двійкові packages(7)або, якщо з будь-якої причини вам абсолютно потрібно побудувати з джерела, використовувати ports(7)інфраструктуру, як пояснено у розділі 15 поширених питань .

Налаштуйте дерево портів, як це детально описано в FAQ. Тоді шукайте openvpnпорт:

cd /usr/ports
make search key=openvpn

Це виведе ряд портів, що містять цей термін openvpn. Один з них - openvpn-2.3.2зі стежкою net/openvpn.

cd net/openvpn
sudo make install clean

Це матиме вигоду з того, що залежності (лише тут lzo2) будуть встановлені належним чином, не втручаючись у вашу систему, і ви отримаєте додаткові інструкції щодо використання openvpnOpenBSD.


Дякую за вашу відповідь. У OpenBSD 5.5 вже є пакет OpenVPN (бінарний), але він старий у версії 2.3.2. Я хочу скласти та встановити останню версію 2.3.4, яка доступна лише у GitHub OpenVPN.
user66229

Як ви вже згадували lzo, я помітив, що доступні три бінарні пакети: lzo-1.08p3.tgz, lzo2-2.06p0.tgz та lzop-1,03.tgz. Який із цих 3 є залежністю для OpenVPN?
user66229

1
@ user66229: Це було б lzo2-2.06p0.tgz. Ось патч, який оновлює порт openvpnвід 2.3.2до 2.3.4, але навряд чи є зміна, що стосується OpenBSD між двома версіями (прочитайте всю нитку). Я б дуже, дуже рекомендую вам просто перейти з бінарним пакетом.
Дамієн

@damien Дякую за вашу відповідь та посилання на виправлення. Я читав вміст виправлення, і мене хвилювало те, що в OpenBSD для OpenVPN немає технічного обслуговування . Будь ласка, допоможіть мені вгадати відповідь щодо того, як бінарний пакет openvpn-2.3.2.tgzпотрапив до офіційних дзеркал завантаження OpenBSD?
користувач66229

1
@ user66229 Тут ви можете побачити весь список редакцій для Makefile порту. Як зазначив у цій темі Стюарт Хендерсон (один з основних обслуговуючих пакетів), не багато з цих змін є актуальними для OpenBSD.
Дамієн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.