Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2015, 21:56   #1
Ponch_Begginer
Пользователь
 
Регистрация: 04.01.2015
Сообщений: 71
По умолчанию Статическая линковка SFML

Народ, кто знает как статически слинковать программу с либами SFML , используя только GCC и консоль Linux?.

p.s: SFML установлен из официального репозитория, ось Ubuntu 15.10.
Ponch_Begginer вне форума Ответить с цитированием
Старый 17.11.2015, 23:03   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Во-первых, использовать библиотеки SFML с суффиксом -s (libsfml-system-s.a и т.д.)
Во-вторых, если мне не изменяет память, препроцессору нужно толкнуть define SFML_STATIC (ключик -DSFML_STATIC), возможно, тоже самое потребуется сделать с GLEW_STATIC (на счет этого не уверен).
В-третьих, необходимо удовлетворить и другие зависимости.

В общем случае это будет выглядеть как-то так:
Цитата:
g++ -o main -DSFML_STATIC main.cpp -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lGLEW -lpthread -lfreetype -ljpeg -lGL -lopenal -lX11 -lX11-xcb -lxcb -lxcb-randr -lxcb-image -ludev
мог что-то забыть (писал по памяти), так что смотрите чего еще хватать не будет.
Ну и остальные зависимости тоже опционально.
Croessmah вне форума Ответить с цитированием
Старый 17.11.2015, 23:22   #3
Ponch_Begginer
Пользователь
 
Регистрация: 04.01.2015
Сообщений: 71
По умолчанию

Не находит либы
Цитата:
/usr/bin/ld: cannot find -lsfml-graphics-s
/usr/bin/ld: cannot find -lsfml-window-s
/usr/bin/ld: cannot find -lsfml-system-s
collect2: error: ld returned 1 exit status
Ponch_Begginer вне форума Ответить с цитированием
Старый 17.11.2015, 23:36   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Не находит либы
Поставьте пакет libsfml-dev (именно dev)
sudo apt-get install libsfml-dev
правда, я не в курсе, ставятся ли статические версии в пакете из убунтовских репозиториев (но вроде бы ставятся), я сам всегда собираю sfml, исправив несколько недочетов.
Croessmah вне форума Ответить с цитированием
Старый 17.11.2015, 23:43   #5
Ponch_Begginer
Пользователь
 
Регистрация: 04.01.2015
Сообщений: 71
По умолчанию

Именно он и стоит(libsfml-dev). также имеются исходники SFML'a с офф сайта. Можно самому собрать статические версии?
Ponch_Begginer вне форума Ответить с цитированием
Старый 17.11.2015, 23:48   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Можно самому собрать статические версии?
Вы у меня разрешения спрашиваете или совета?

Сейчас попробовал скомпилировать примитивный код:
Код:
#include <SFML/Graphics.hpp>

int main()
{
   sf::RenderWindow wnd(sf::VideoMode(800,600), "SFML static test") ;
   while( wnd.isOpen() ){
      sf::Event event ;
      while( wnd.pollEvent(event) ){
          if( event.type == sf::Event::Closed )
              wnd.close() ;
      }
      wnd.clear(sf::Color::Red) ;
      wnd.display() ;
   }
}
оказалось, у меня еще тоже нет статических библиотек. Собрал из исходников, версия 2.3.2 с некоторыми дополнениями.
Строка с параметрами выше отработала нормально, приложение собралось и запустилось.
Croessmah вне форума Ответить с цитированием
Старый 17.11.2015, 23:54   #7
Ponch_Begginer
Пользователь
 
Регистрация: 04.01.2015
Сообщений: 71
По умолчанию

У меня тоже исходники 2.3.2 , как правильно скампилить статики?
Ponch_Begginer вне форума Ответить с цитированием
Старый 17.11.2015, 23:58   #8
Ponch_Begginer
Пользователь
 
Регистрация: 04.01.2015
Сообщений: 71
По умолчанию

Все необходимые инструменты и библиотеки , для сборки SFML установил.
Ponch_Begginer вне форума Ответить с цитированием
Старый 18.11.2015, 00:06   #9
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
как правильно скампилить статики?
Там CMake, если нет желания возиться с ним в консоли, то можете поставить cmake-gui. Тогда выберите папку с исходниками и папку куда будет свои наработки пихать cmake, затем configure, затем поставьте
CMAKE_BUILD_TYPE в Release
и снимате галочку с пункта BUILD_SHARED_LIBS
опционально можете добавить необходимые флаги. У меня, например, добавлен флаг -std=c++14 в CMAKE_CXX_FLAGS
Снимок-20.jpg
потом generate.
Идем в терминале в конечную папку, куд указывали пихать результаты cmake, там выполняем
make
sudo make install


Собственно, инструкция по сборке и перечень всех зависимостей есть в руководстве: http://www.sfml-dev.org/tutorials/2....with-cmake.php

Последний раз редактировалось Croessmah; 18.11.2015 в 00:09.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статическая линковка OpenAL andreil Общие вопросы C/C++ 8 30.12.2016 16:28
SFML \ Структура игры \ error LNK2001 XuPoH1 Visual C++ 1 12.04.2015 09:32
SFML+Cpp+клешни=Unable to open file qweqweqwe123123123 Помощь студентам 1 06.02.2015 19:01
загрузка картинки,SFML DimDimich Помощь студентам 4 02.03.2014 23:57
qt4, win32 и статическая линковка. ASGAlex Qt и кроссплатформенное программирование С/С++ 3 09.06.2009 09:13