O que acontece quando eu executo o “./configure” no Linux?

4

Quando tentamos ./configure algum software Linux da fonte antes de make ing, geralmente há uma lista enorme de verificação de outros parâmetros de software realizados, por exemplo, o abaixo é uma pequena parte de uma lista tão longa:

-- Java Home guessed: /usr/lib/jvm/java

-- Found ANT: /usr/bin/ant  
-- Building libhdfs
-- Could NOT find MPI (missing:  MPI_LIBRARY MPI_INCLUDE_PATH) 
-- MPI Not Found! Distributed Executables will not be compiled
-- Looking for pthread_setaffinity_np
-- Looking for pthread_setaffinity_np - found
-- Performing Test HAS_MARCH_NATIVE
-- Performing Test HAS_MARCH_NATIVE - Success
-- Performing Test HAS_MTUNE_NATIVE
-- Performing Test HAS_MTUNE_NATIVE - Success
-- Performing Test HAS_CRC32
-- Performing Test HAS_CRC32 - Failed
Sempre fui surpreendido por esta lista enorme de cheques - eles são realmente todos necessários? Em muitos casos, algumas condições são Failed - como a última linha do exemplo - mas a configuração continua com sucesso, então isso significa que elas não eram necessárias?

    
por Ali 06.03.2013 / 20:32

2 respostas

4

Alguns dos testes são históricos. Em alguns casos, o pacote de software é realmente antigo e existe há tempo suficiente para que eles tentem construir sistemas antigos que não têm todos os recursos que temos agora. Mas você também pode deixar esses cheques antigos - não custa muito em termos de tamanho.

Algumas das verificações são para várias maneiras de fazer as coisas. Se você pode fazer algo com A ou B, então você verifica qualquer um deles. A verificação de A pode falhar, mas a verificação para B é bem-sucedida e você também usa B.

E algumas das verificações são para coisas opcionais. Se há um recurso X que não é necessário, mas um "legal de ter", então você pode verificar o X, e incluir esse recurso na compilação, se puder, mas deixar de fora e ter um pacote que possa ser reparado (sem X).

Em seguida, alguns recursos são realmente necessários e qualquer falha interromperá a compilação do pacote.

Então, isso realmente depende do recurso; existem alternativas, e nós realmente precisamos disso ou isso é um "bom ter".

A outra coisa a considerar é que o configure é executado uma vez , em tempo de compilação. Quaisquer etapas adicionais de configuração são apenas uma vez e não afetam o tempo de execução de forma alguma. Você pode esperar um extra de 5 minutos no configure, mas é isso. Geralmente não é uma troca ruim em etapas extras / tentando fazer uma compilação mais estável.

    
por 06.03.2013 / 20:40
2

Are them really necessary?

Isso depende por programa, mas geralmente a maioria deles não é necessária.

A idéia real é procurar um programa preferido e, se ele não estiver disponível, voltar para uma alternativa. Por exemplo. verifique se há ncurses, se presente: use. Se não estiver presente, verifique a biblioteca normal de curses. Se presente, use isso, se não verificar a próxima alternativa ou abortar.

A ideia por trás disso é ótima, mas a implementação é geralmente falha. Muitas pessoas copiam o autoconf e / ou configuram scripts de outros programas e apenas adicionam coisas até que as coisas funcionem. Isso inclui muita coisa.

    
por 06.03.2013 / 20:43

Tags