Каков правильный синтаксис для добавления CFLAGS и LDFLAGS для «настройки»?

41

Я хочу установить OpenVPN на OpenBSD 5.5 с использованием исходного архива OpenVPN.

В соответствии с инструкциями здесь , я должен установить lzo и

add CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" директивы для "configure", так как gcc не найдет их иначе.

Я много гуглил для руководства о том, как сделать выше на OpenBSD, но его нет.

Вот что я планирую сделать:

  1. Разархивируйте исходный архив в только что созданный каталог
  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"
user66229
источник

Ответы:

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Может понадобиться в случае разделяемых библиотек , если путь запуска не используется (это зависит от операционной системы, инструменты разработки и варианты, которые используются, но это не должно быть больно).

vinc17
источник
Спасибо за Ваш ответ. Установлен ли gcc по умолчанию в базовой системе OpenBSD 5.5? Если это не так, я не собираюсь устанавливать сторонний пакет, так как он может содержать ошибки или уязвимости безопасности.
user66229
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 .
Скали
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) будут правильно установлены, не мешая вашей системе, и вы получите дополнительные инструкции по использованию openvpnв OpenBSD.

user80301
источник
Спасибо за Ваш ответ. 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?
user66229
1
@ user66229 здесь вы можете увидеть весь список ревизий для Makefile порта. Как сказал Стюарт Хендерсон (один из главных сопровождающих пакетов) в этой теме, не многие из этих изменений действительно актуальны для OpenBSD.
Дэмиен