Como construir openssl com clang (em vez de gcc) em uma máquina FreeBSD?

1

Eu tenho uma máquina de construção FreeBSD de 64 bits. Eu preciso adicionar suporte https no meu código de aplicativo python3. Para isso, é aconselhável construir / compilar python com suporte a openssl. Eu não preciso de nenhuma dependência do gcc no meu executável final.

Então, ao invés disso, eu estou usando o clang para construir python. Mas antes disso, enquanto construímos openssl, não posso fazê-lo.

Eu até usei "set CC clang". Mas ainda openssl está ocupando o gcc como o compilador c. Então, rodando "ldd" no executável dinâmico final ele está mostrando a dependência da libc.

Este link não menciona nada sobre o FreeBSD e o clang. ( link )

Por favor, sugira alguma alternativa?

[EDITAR] Estes são o comando que estou executando no meu \bin\sh shell

set CC clang

./config -fPIC

Na saída, noto a seguinte linha que indica o uso do gcc:

BN_ASM =x86_64-gcc.o

    
por tarun_2709 13.08.2015 / 10:40

1 resposta

1

Você parece ter vários problemas, resumidos abaixo. Você quase certamente deve estar usando uma porta para python conforme observado por @mjturner, que usará o OpenSSL nativo do FreeBSD.

  • em csh , a sintaxe set CC clang configura duas variáveis chamadas CC e clang para a cadeia vazia, você deseja set CC=clang , mas nem isso funcionará (consulte o próximo ponto)
  • simplesmente definir uma variável no seu csh shell não afetará mais nada, você realmente quer usar setenv CC clang (note que este não usa = ). config é um script sh , portanto, a variável deve ser exportada para ser vista.
  • libc é não uma dependência de gcc , quase tudo que você vincula dinamicamente será vinculado à libc (no FreeBSD isso não é GNU glibc). A alternativa é vincular estaticamente a qual, se possível, remove a dependência dinâmica incorporando o código necessário no binário final. (Quando você usa gcc , pode haver uma dependência de libgcc em algumas plataformas e é usada para entrega de exceção. Isso é mais difícil de evitar.) Eu esperaria que você tenha problemas para vincular estaticamente python.

Se você estiver criando o OpenSSL e o python usando clang para algum propósito, como distribuição de binários (supondo que leu atentamente os contratos de licença relevantes) ou tenha um requisito para versões de software específicas, isso deve ser possível configurando corretamente% código%. Observei que a porta OpenSSL não faz isso, opta por corrigir o CC de comandos do script gcc e usa a variável de ambiente Configure .

Outro conselho:

  • veja o wiki do OpenSSL para usar o clang: link FREEBSDCC é de fato coberto, mas não o FreeBSD especificamente porque todos os BSDs são considerados efetivamente equivalentes lá.
  • certifique-se de executar clang depois de criar o OpenSSL
  • certifique-se de compilar tudo com o mesmo compilador, isso significa make test e tudo em python
por 13.08.2015 / 14:14