Qual é a sintaxe correta para adicionar CFLAGS e LDFLAGS para "configurar"?

40

Desejo instalar o OpenVPN no OpenBSD 5.5 usando o tarball de código-fonte do OpenVPN.

De acordo com as instruções aqui , tenho que instalar o lzo e

adicione as diretivas CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib" para "configure", pois o gcc não as encontrará de outra forma.

Eu pesquisei extensivamente no Google um guia sobre como fazer o acima no OpenBSD, mas não há nenhum.

É isso que pretendo fazer:

  1. Descompacte o tarball de origem em um diretório recém-criado
  2. Emita o comando ./configure CFLAGS = "- I / usr / local / include" LDFLAGS = "- L / usr / local / lib"
  3. Emita o comando make
  4. Emita o comando make install

Qual das seguintes sintaxe está correta?

./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"
user66229
fonte

Respostas:

41

A maneira correta é:

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

mas isso pode não funcionar com todos os configurescripts. Provavelmente é melhor definir variáveis ​​de ambiente como CPATHe LIBRARY_PATH(consulte a gccpágina de manual).

Um exemplo:

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

no seu .profile, por exemplo. O LD_LIBRARY_PATHpode ser necessária em caso de bibliotecas compartilhadas se um caminho de execução não é usado (isso depende do sistema operacional, as ferramentas de compilação e as opções que são usados, mas não deve ferir).

vinc17
fonte
Obrigado pela sua resposta. O gcc é instalado por padrão no sistema básico do OpenBSD 5.5? Caso contrário, não instalarei um pacote de terceiros, pois ele pode conter bugs ou vulnerabilidades de segurança.
User66229
11
@ user66229 se você fez uma instalação padrão, então sim gcc-4.2.1(a menos que você esteja em máquinas realmente antigas, como vaxen) comp55.tgz. Existem pacotes para gcc-4.8e 4.9, e também llvm/clang 3.0. O primeiro não é incluído principalmente por razões de licenciamento (GPLv2 x GPLv3), o último não é usado porque não suporta todas as plataformas que o OpenBSD suporta atualmente.
quer
11
@ user66229 Eu editei minha resposta. Este é apenas um exemplo, pode haver outras maneiras de fazer isso e você já pode ter algumas configurações. Verifique primeiro com echo $CPATHe assim por diante.
precisa saber é
11
Obrigado pelo comentário "mas isso pode não funcionar com todos os scripts de configuração" - acabei de encontrar um caso em que, após várias dependências compiladas com CFLAGS, a última dependência falha quando o CFLAGS é especificado (e, na verdade, grep CFLAGS configureretorna em branco a partir desse script de configuração) .
sdaau 27/09/2015
11
Eu teria muito cuidado com LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee 22/03
8

A primeira sintaxe está correta.

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

No entanto, é altamente recomendável usar o binário packages(7)ou, se por qualquer motivo você precisar absolutamente construir a partir do código-fonte, usar a ports(7)infraestrutura, conforme explicado na seção 15 das Perguntas frequentes .

Configure a árvore de portas conforme detalhado nas Perguntas frequentes. Então procure uma openvpnporta:

cd /usr/ports
make search key=openvpn

Isso produzirá várias portas contendo o termo openvpn. Um deles é openvpn-2.3.2com o caminho net/openvpn.

cd net/openvpn
sudo make install clean

Isso trará o benefício de que as dependências (somente aqui lzo2) serão instaladas corretamente sem prejudicar o seu sistema e você receberá instruções adicionais sobre como usar openvpnno OpenBSD.

user80301
fonte
Obrigado pela sua resposta. O OpenBSD 5.5 já possui um pacote OpenVPN (binário), mas é antigo na versão 2.3.2. Desejo compilar e instalar a versão mais recente 2.3.4, disponível apenas no GitHub do OpenVPN.
user66229
Como você mencionou o lzo, notei que existem três pacotes binários disponíveis: lzo-1.08p3.tgz, lzo2-2.06p0.tgz e lzop-1.03.tgz. Qual destes 3 é a dependência do OpenVPN?
User66229
11
@ user66229: Isso seria lzo2-2.06p0.tgz. Aqui está um patch que atualiza a porta de openvpnfrom 2.3.2para 2.3.4, mas dificilmente há uma alteração relevante para o OpenBSD entre as duas versões (leia o tópico inteiro). Eu realmente recomendo que você apenas vá com o pacote binário.
damien
@damien Obrigado pela sua resposta e pelo link para o patch. Eu li o conteúdo do patch e o que me preocupou é o fato de não haver mantenedor no OpenBSD for OpenVPN . Por favor me ajude a adivinhar a resposta de como o pacote binário openvpn-2.3.2.tgzchegou aos espelhos de download oficiais do OpenBSD?
user66229
11
@ user66229 aqui você pode ver a lista completa de revisões do Makefile da porta. Como Stuart Henderson (um dos principais mantenedores de pacotes) disse nesse tópico, muitas dessas mudanças não são relevantes para o OpenBSD.
damien