2017-01-06 3 views
0

Использование Linux Mint 18 Cinnamon 64-BitLinux SFML - не удается открыть файл Shared Object

Я возникли проблемы, пытаясь получить SFML работать. Я пытаюсь скомпилировать из командной строки с g ++.

Мой файл /home/joe/Desktop/SFML/test/main.cpp

Мои SFML Папка на /usr/lib/SFML-2.4.1

Если я бегу g++ -c main.cpp -I/usr/lib/SFML-2.4.1/include компилирует нормально. Затем я запустил g++ main.o -o sfml-app -L/usr/lib/SFML-2.4.1/lib -lsfml-graphics -lsfml-system -lsfml-window -lsfml-audio У этого были проблемы до этого, но после использования команды -L он отлично работает сейчас.

Howerver когда я бег ./sfml-app я получаю ошибку ./sfml-app: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file: No such file or directory

Сейчас в /usr/lib/SFML-2.4.1/lib каталоге libsfml-graphics.so.2.4 является символическим со следующей цепью (все файлы в этом каталоге.

libsfml- graphics.so -> libsfml-graphics.so.2.4 -> libsfml-graphics.so.2.4.1

Так может кто-нибудь объяснить мне, почему объектный файл не может быть найден Благодаря

+0

Вы можете использовать '-rpath/USR/Библиотека/SFML-2.4.1/lib', чтобы сообщить 'ld' включить полный путь библиотеки или создать файл конфигурации в'/etc/ld.so.conf.d', указывая на местоположение библиотеки lib, затем запустите 'ldconfig'. – alvits

ответ

0

proble? m, с которым вы столкнулись, заключается в том, что вы говорите компоновщику, где находите файлы/информацию библиотеки, но при запуске программы ваша система не будет знать, где найти общие библиотеки, принадлежащие SFML.

Самое быстрое исправление заключается в создании небольшого сценария оболочки для запуска вашей программы, которая устанавливает переменную окружения LD_LIBRARY_PATH.

Что-то, как это должно работать (непроверенные):

#!/usr/bin/bash 
LD_LIBRARY_PATH=/usr/lib/SFML-2.4.1/bin ./sfml-app 

В качестве альтернативы, я бы рекомендовал вам compile and install SFML from sources. Это не так сложно. Самая сложная часть - это определение всех зависимостей и их установка сначала (желательно с помощью диспетчера пакетов).

Это также можно установить с помощью SFML apt-get, но я не 100% уверен, что их версия до настоящего времени: sudo apt-get install libsfml-dev