Nano Hash - криптовалюты, майнинг, программирование

Ошибка компиляции log4cpp

У меня есть следующий код, который не компилируется.

#include <stdio.h>
#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/SimpleLayout.hh>

#define LOGFILE "./test.log"

int main()
{
    /*Setting up Appender, layout and Category*/
    log4cpp::Appender *appender = new log4cpp::FileAppender("FileAppender",LOGFILE);
    log4cpp::Layout *layout = new log4cpp::SimpleLayout();
    log4cpp::Category& category = log4cpp::Category::getInstance("Category");

    appender->setLayout(layout);
    category.setAppender(appender);
    category.setPriority(log4cpp::Priority::INFO);

    /*The actual logging*/
    category.info("This is for tracing the flow");
    category.notice("This is to notify certain events");
    category.warn("This is to generate certain warnings");
}

$ g++ -I/usr/local/include/log4cpp -L/usr/local/lib/ -llog4cpp -lpthread log.cc

Это компилируется. Но тогда я получаю следующую ошибку.

./a.out: error while loading shared libraries: liblog4cpp.so.4: cannot open shared object file: No such file or directory

Я вижу liblog4cpp.so.4 в папке /usr/local/lib. Как я могу это решить?

17.11.2011

Ответы:


1

Если вы подключаетесь из нестандартного места, загрузчик не найдет библиотеку. У вас есть несколько вариантов:

  1. Сообщите об этом в каждом конкретном случае: LD_LIBRARY_PATH=/usr/local/lib ./aout

  2. Жестко закодируйте путь в исполняемый файл: добавьте -Wl,-r,/usr/local/lib в команду компоновщика.

  3. Играйте с окружающей средой (я думаю, вы просто export LD_LIBRARY_PATH).

(Правильная среда сборки (например, cmake) обычно автоматически добавляет параметр компоновщика из (2), если вы заставите его размещать свои библиотеки в нестандартном месте.)

Всегда проверяйте ldd ./a.out, если у вас проблемы с загрузкой, чтобы проверить, какие библиотеки отсутствуют.

17.11.2011

2

У меня была похожая ошибка с другой программой.

Но добавление этой строки в файл .bashrc в домашнем каталоге решило проблему. (Активируется и сохраняется при повторном входе в систему)

export LD_LIBRARY_PATH=path/to/log4cpp/lib:$LD_LIBRARY_PATH
06.11.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..