Использование 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
Так может кто-нибудь объяснить мне, почему объектный файл не может быть найден? Спасибо
Проблема, с которой вы сталкиваетесь, заключается в том, что вы сообщаете компоновщику, где искать библиотечные файлы / информацию, но при запуске программы ваша система не будет знать, где найти разделяемые библиотеки, принадлежащие 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
Других решений пока нет …