Linux SFML — не удается открыть файл общего объекта

Использование Linux Mint 18 Cinnamon 64-Bit

У меня проблемы с тем, чтобы заставить 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 теперь все работает нормально.

когда я бегу ./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

Решение

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

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

Примерно так должно работать (не проверено):

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

В качестве альтернативы я бы порекомендовал вам компилировать и устанавливать SFML из исходников. Это не так сложно. Самое сложное — это определить все зависимости и сначала установить их (желательно с помощью вашего менеджера пакетов).

Также возможно установить SFML используя apt-get, но я не уверен на 100%, что их версия актуальна: sudo apt-get install libsfml-dev

0

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

Других решений пока нет …

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