Мне нужно построить log4cxx библиотека в системе SuSE Linux, где я не являюсь пользователем root. Менеджер пакетов zypper, видимо, не знает о log4cxx.
Я загружаю log4cxx и попробуй собрать с автоинструментами
./configure
checking for APR... no
configure: error: APR could not be located. Please use the --with-apr option.
Я тогда ищу libapr
:
find / -name libapr*
/usr/share/doc/packages/libapr-util1
/usr/share/doc/packages/libapr1
/usr/lib64/libaprutil-1.so.0.3.12
/usr/lib64/libapr-1.so.0.4.5
/usr/lib64/libaprutil-1.so.0
/usr/lib64/libapr-1.so.0
Так что я стараюсь
./configure --with-apr=/usr/lib64/libapr-1.so.0
configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.
То же самое для --with-apr=/usr/lib64/libapr-1.so.0.4.5
а также --with-apr=/usr/lib64/
,
Какой файл делает ./configure
Ищу? Что значит --with-apr
ожидать? Является одним из двух *.so.*
файлы необходимой библиотеки?
На software.opensuse.org у кого-то есть пакеты, собранные для последних версий openSUSE, а также SLE на liblog4cxx10. Может быть, это будет работать для вас, вместо того, чтобы строить свой собственный.
Возможно, вы захотите установить libapr1-devel
так что вы можете скомпилировать против него. Затем попробуйте снова ./configure
,
Я столкнулся с той же проблемой, я думаю, что вы используете исходный код сайта appache, который, как я считаю, устарел. Эта проблема была исправлена в стволе SVN несколько лет назад (лолол, я думаю, примерно в то время, когда этот вопрос был задан).
Просто извлеките исходный код ствола SVN и скомпилируйте его:
svn checkout http://svn.apache.org/repos/asf/incubator/log4cxx/trunk apache-log4cxx
./autogen.sh
./configure
make
make check
sudo make install
Я столкнулся с той же проблемой на 3.3.4-5.fc17.x86_64 и решил ее, включив соответствующие файлы H в файлы CPP, сообщаемые утилитой make.
В моем случае я должен запускать утилиту make 3 раза каждый раз, получая новую ошибку и исправляя ее, добавляя соответствующее include H в сообщаемый файл CPP.
Основная идея заключается в следующем:
1) Проверьте, запустив утилиту man, где указана функция, указанная в ошибке.
Например, man memmove говорит, что он определен в заголовочном файле string.h.
2) Добавьте соответствующий файл включения в файл CPP.
Например, утилита make жалуется, что inputtreamreader.cpp не находит функцию memmove. Откройте файл inputtreamreader.cpp и добавьте string.h к его заголовочным файлам.
3) Запустите утилиту make, пока log4cxx не будет скомпилирован без ошибок.
Майкл Горен прав.
Отсутствует несколько файлов «.h».
Поэтому вы должны добавить их перед запуском make.
sed -i '1i#include <string.h>\n' src/main/cpp/inputstreamreader.cpp
sed -i '1i#include <string.h>\n' src/main/cpp/socketoutputstream.cpp
sed -i '1i#include <string.h>\n' src/examples/cpp/console.cpp
sed -i '1i#include <stdio.h>\n' src/examples/cpp/console.cpp