с использованием LIBTOOL=libtool
помогает, только если libtool, установленный в вашей системе, отличается от того, который поставляется с openldap и зависимостями.Но на самом деле эта проблема связана с libtool, а не с libz, как может указывать ошибка.Если вы посмотрите более внимательно на сообщение об ошибке, вы увидите, что =
:
libtool: link: warning: cannot determine absolute directory name of `=/usr/lib'
, =/usr/lib
- это не каталог.Откуда это =
?Я нашел патч для libtool, ответственный за это в libtool-patches , который описывает новую функцию:
Если PATH начинается с sysroot, замените его на =
Я не знаю, в чем причина этого, но результат можно найти в файлах .la в вашей системе, возможно, запустите этот
grep "=/usr/lib" /usr/lib/*.la
в зависимости от того, куда вы устанавливаете свои библиотекинайдите их.Вы увидите определение dependency_libs, которое включает, вероятно, среди прочего строку =/usr/lib
, и вот откуда берется дополнительная =
.
Что делать?
обнаружив, что это неправильно.la файлы определяют, к какому программному обеспечению они относятся, и перестраивают их, используя LIBTOOL=/path/to/libtool2.2
.
или, если это не работает:
perl -p -i -e 's/(func_replace_sysroot_result=")=/$1/' ltmain.sh &&
perl -p -i -e 's/\$\{lt_sysroot:\+=\}//' ltmain.sh
всего наилучшего,
Питер