Por que não consigo compilar esta versão do Postfix?

0

Acabei de instalar o postfix 2.7.11 no servidor Ubuntu a partir do código-fonte. Eu não uso o próprio ubuntu porque preciso da versão antiga.

Eu encontrei um problema muito interessante. Antes, tanto no CentOS 5 quanto no 6, eu posso construir o código-fonte sem nenhum problema. Mas, no servidor Ubuntu 12.04 é totalmente diferente.

Eu tenho os seguintes problemas:

dict_nis.c:173: error: undefined reference to 'yp_match'
dict_nis.c:187: error: undefined reference to 'yp_match'

dns_lookup.c:347: error: undefined reference to '__dn_expand'
dns_lookup.c:218: error: undefined reference to '__res_search'
dns_lookup.c:287: error: undefined reference to '__dn_expand'
dns_lookup.c:498: error: undefined reference to '__dn_expand'
dns_lookup.c:383: error: undefined reference to '__dn_expand'

Sim, esta razão é óbvia. Eu apenas pesquiso uma biblioteca relacionada e a adiciono ao makefile. Funciona.

A questão é por quê? Qual é a diferença entre o Ubuntu Server e o CentOS?

Uma possibilidade é a versão gcc e ld. O servidor Ubuntu usa versões diferentes do gcc e ld com o CentOS. Mas eu não tenho certeza.

    
por Coofucoo 08.08.2012 / 14:46

3 respostas

0

Finalmente, com outras pessoas, ajude. Eu encontrei o motivo.
Ubuntu tem localização especial .so. A localização é diferente do CentOS.
Mas no arquivo makedefs do Postfix, ele não inclui esse local específico. Vamos verificar a fonte:

SYSLIBS="-ldb"
        for name in nsl resolv
        do
            for lib in /usr/lib64 /lib64 /usr/lib /lib
            do
            test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
                SYSLIBS="$SYSLIBS -l$name"
                break
            }
            done
        done 

Aqui, o SYSLIBS será usado quando fizer. Este script irá verificar algumas pastas especiais para adicionar .so lib. Mas esses locais não incluem o Ubuntu.

    
por Coofucoo 28.08.2012 / 04:49
1

Você deve anexar -ldb -lnsl -lresolv a AUXLIBS .

    
por PersianGulf 18.06.2013 / 16:37
0

O pacote postfix no Ubuntu instalará automaticamente todas bibliotecas dependentes para instalação, chamadas de "Dependências de Construção".

Eu recomendo que você instale todos os pacotes de dependência de criação mostrados neste link e tente reconstruir, É provável que você não tenha algumas bibliotecas para compilar.

    
por Thomas Ward 08.08.2012 / 14:54