Не удается запустить Code::Blocks: libwx_gtk2u-2.8.so.0 не найден

Я пытаюсь установить Code::Blocks 10.05 из (не SVN) источников (codeblocks-10.05-src.tar.bz2). Моя ОС Ubuntu 11.04. Сначала мне нужно было загрузить и установить wxWidgets (сейчас у меня wxGTK-2.8.12), что, похоже, сработало. Я собрал его по этой инструкции:

http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_from_source_on_Linux

Затем я настроил C::B с помощью

./configure --with-wx-config=/opt/wx/2.8/bin/wx-config

и побежал

export LDFLAGS="-Wl,-R /opt/wx/2.8/lib"
make
sudo -i
make install

При попытке запустить C::B я получаю следующую ошибку:

codeblocks: error while loading shared libraries: libwx_gtk2u-2.8.so.0: cannot open shared object file: No such file or directory

Здесь был задан тот же вопрос: ошибка при загрузке разделяемых библиотек, но предлагаемое решение ( а именно добавление конфигурации wxWidgets к параметрам, переданным в configure), у меня не сработало.

Выход wx-config --prefix равен /opt/wx/2.8,

Выход wx-config --libs равен -L/opt/wx/2.8/lib -pthread -lwx_gtk2u-2.8,

а which wx-config это /opt/wx/2.8/bin/wx-config.

Я искал библиотеку и обнаружил, что /opt/wx/lib/libwx_gtk2u-2.8.so.0 является ссылкой на libwx_gtk2u-2.8.so.0.8.0 в той же папке.

Что здесь может быть не так?


person Christoph    schedule 26.08.2011    source источник


Ответы (3)


Проблема в том, что программа не может найти библиотеки виджетов WX во время времени выполнения. Вам нужно будет установить переменную LD_LIBRARY_PATH, чтобы включить расположение wxWidgets следующим образом:

LD_LIBRARY_PATH=/opt/wx/2.8/lib ./codeblocks

Причина, по которой он не работает, заключается в том, что вы скомпилировали блоки кода для wxWidgets, найденного в /opt/, а не для того, который установлен в /usr/; программа не знает, как искать в /opt библиотеки wx.

person RobertoP    schedule 29.08.2011

Вероятно, самый простой способ запустить code::blocks в Ubuntu — это просто установить его через менеджер пакетов Synaptic. Просто введите кодовые блоки в «Быстрый поиск». Найдите кодовые блоки в списке и просто щелкните правой кнопкой мыши, чтобы отметить их для установки. Любые необходимые зависимости и отсутствующие библиотеки будут автоматически обработаны и установлены Synaptic по мере необходимости.

Если вы заинтересованы в том, чтобы попробовать ночные сборки C::B на Ubuntu, вам следует проверить неофициальный debian- репозиторий здесь.

person greatwolf    schedule 27.08.2011
comment
Пакеты Ubuntu работают, но у меня возникли проблемы с созданием с ними приложений wxWidgets. Вот почему я попытался скомпилировать C::B и wxWidgets из исходников. Я новичок в wxWidgets, возможно, я просто неправильно настроил свои проекты. Тем не менее, это не объясняет, почему самодельный C::B не смог загрузить библиотеку. - person Christoph; 27.08.2011

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

Если вы установили wxGTK, вы увидите файл в /usr/local/lib. Вы получите эту ошибку, если указанный выше путь не является частью make-файла. Я получил эту ошибку при запуске wxFormBuilder после сборки из исходного кода в CentOS. Есть 2 подхода.

Подход 1: размещение пути в .bashrc

gedit /home/{ваше имя пользователя}/.bashrc

Затем после строки # Пользовательские псевдонимы и функции вставьте следующее

экспорт $LD_LIBRARY_PATH=/usr/local/lib.

Это будет работать нормально, но для текущего входа в систему, но для других пользователей, таких как root, вам, возможно, придется сделать то же самое в соответствующих файлах .bashrc.

Подход 2. Создание собственных файлов конфигурации

cd /etc/ld.so.conf.d

gedit wxformbuilder.conf

Укажите путь /usr/local/lib и сохраните файл.

ldconfig (для обновления пути к библиотеке).

person 1337ninja    schedule 01.10.2013