Ошибка при загрузке общих библиотек: libsystemc-2.3.0.so

Я новый пользователь Linux и пытаюсь установить systemc-2.3.0 библиотека на моей машине (Fedora 16). Я очень тщательно следовал всем инструкциям, упомянутым в файле библиотеки INSTALL, но получаю сообщение об ошибке при попытке запустить простую программу с использованием ECLIPSE. Я правильно связал все библиотеки в ECLIPSE, но все равно получаю сообщение об ошибке.

Программа выглядит следующим образом:

#include <systemc.h>

using namespace std;

int sc_main(int argc, char * argv[])
{
cout << "hello world" << endl;

for(int i=0; i<argc; i++)
cout << argv[i] << " ";

cout << endl;
return 0;
}

И вывод ошибки:

/ home / vivek / workspace / TestSystemC / Debug / TestSystemC: ошибка при загрузке общих библиотек: libsystemc-2.3.0.so: невозможно открыть общий объектный файл: такого файла или каталога нет

Любая помощь будет высоко оценена. Пожалуйста, объясните ваши предложения подробно (шаг за шагом), так как я не эксперт по Linux.

Спасибо.

2

Решение

Это проблема настройки среды для динамического связывания, поскольку общая библиотека устанавливается вне системных системных каталогов по умолчанию. Когда вы выполняете двоичный файл, загрузчику не удалось найти libsystemc-2.3.0.so.

Два решения.

  1. настройка вашего LD_LIBRARY_PATH.

    export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64:$LD_LIBRARY_PATH

    или, если ваш LD_LIBRARY_PATH по умолчанию пуст

    export LD_LIBRARY_PATH=/usr/local/systemc-2.3.0/lib-linux64

  2. добавление rpath к исполняемому файлу при компоновке бинарного файла. Он добавляет запись в двоичный файл и подсказывает загрузчику поиск дополнительного пути.

    g++ -o TestSystemC ...your c++ files... -L/usr/local/systemc-2.3.0/lib-linux64 -lsystemc-2.3.0 -Wl,-rpath,/usr/local/systemc-2.3.0/lib-linux64

4

Другие решения

Ага!
Infact, для всех таких сообщений об ошибках, отсутствует то, что пользователь не забыл или забыл установить LD_LIBRARY_PATH

0

Вы можете установить в затмении настройка компоновщика-> разное -> -Wl, -rpath, your_lib_path

0

Я добавляю две строки в конце ~/.profile следующим образом:

export SYSTEMC_HOME=/usr/local/systemc-2.3.0/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/systemc-2.3.0/lib-linux64

И если это не сработает, вы можете попробовать добавить две софт-ссылки (т.е. lib->lib-linux64/ а также lib-linux -> lib-linux) в каталоге верхнего уровня systemc-2.3.0 как вы установили (например, мой путь /usr/local/systemc-2.3.0/). Соответствующие команды следующие

(измените ваш текущий каталог на каталог $ SYSTEMC_HOME):

$ln -s /usr/local/systemc-2.3.0 lib
$ln -s /usr/local/systemc-2.3.0  lib-linux

Возможно, lib-linux64 поддерживает операционную систему с 64-битной версией, а lib или lib-> linux поддерживает операционную систему с 32-битной версией.

0
По вопросам рекламы [email protected]