Почему я не могу скомпилировать эту версию Postfix?

Я только что установил postfix 2.7.11 на сервер Ubuntu из исходного кода. Я не использую собственную Ubuntu, потому что мне нужна старая версия.

Я нашел очень интересную проблему. Раньше в CentOS 5 и 6 я мог без проблем создавать исходный код. Но в Ubuntu server 12.04 совершенно другой.

У меня возникли следующие проблемы:

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'

Да, эта причина очевидна. Я просто ищу соответствующую библиотеку и добавляю ее в make-файл. Оно работает.

Вопрос в том, почему? В чем разница между Ubuntu Server и CentOS?

Одной из возможностей является версия gcc и ld. Сервер Ubuntu использует разные версии gcc и ld с CentOS. Но я не уверен.

0
задан 8 August 2012 в 16:48

3 ответа

Наконец, с помощью других. Я нашел причину.
У Ubuntu есть специальное местоположение .so. Расположение отличается от CentOS.
Но в файле makedefs Postfix он не включает это конкретное местоположение. Давайте проверим источник:

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 

Здесь SYSLIBS будет использоваться, когда он будет работать. Этот скрипт проверит некоторую специальную папку для добавления .so lib. Но эти места не включают в себя Ubuntu.

0
ответ дан 8 August 2012 в 16:48

Вы должны добавить -ldb -lnsl -lresolv к AUXLIBS.

0
ответ дан 8 August 2012 в 16:48

Пакет postfix в Ubuntu автоматически установит все зависимые библиотеки для установки, называемые «Зависимости сборки».

Я бы порекомендовал вам установить все пакеты зависимостей сборки, показанные по этой ссылке , а затем попытаться пересобрать, скорее всего, вам не хватает определенных библиотек для компиляции.

0
ответ дан 8 August 2012 в 16:48

Другие вопросы по тегам:

Похожие вопросы: