maisvendoo / RRS

Russian Railway Simulator
http://rusrailsim.org
GNU General Public License v2.0
102 stars 20 forks source link

Сборка под Linux #12

Open pblyp opened 5 years ago

pblyp commented 5 years ago

Привет!

Будет здорово, если появится инструкция по сборке на Linux. Не сразу понял, что, к примеру, надо собирать с qmake и подхватывать зависимости командой git submodule update --init плюс хотелось бы список зависимостей.

На Arch у меня пока проблема со сборкой openscenegraph версии 3.7.0, в репозиториях сейчас версия 3.6.4.

Думаю, есть также смысл разобраться с #2

einhander commented 5 years ago

Можно упаковать в appimage чтобы не заморачиваться со сборкой на зоопарке дистрибутивов. Пользователи ленивы, собирать из сырцов будет 1 из 10.

valdiks commented 5 years ago

Буду благодарен, если кто подскажет как собрать/запустить под Ubuntu 18.04.

maisvendoo commented 5 years ago

На Arch у меня пока проблема со сборкой openscenegraph версии 3.7.0, в репозиториях сейчас версия 3.6.4.

Думаю, есть также смысл разобраться с #2

В ауре мой пакет - openscenegraph-dev - собирается в двух версиях - обычной и отладочной. Инструкцию - сделаю

maisvendoo commented 5 years ago

Можно упаковать в appimage чтобы не заморачиваться со сборкой на зоопарке дистрибутивов. Пользователи ленивы, собирать из сырцов будет 1 из 10.

Это хорошая идея, я думаю имеет смысл так и сделать на первое время

SergeyDjam commented 5 years ago

Подскажите, делаю сборку в свой дистрибутив ROSA Fresh. Столкнулся с той же проблемой, ссылается на

mkdir: невозможно создать каталог «/usr/lib/osgPlugins-3.7.0/»: Отказано в доступе

Тогда как в репозиториях https://github.com/openscenegraph/OpenSceneGraph/releases максимальная версия 3.6.4

maisvendoo commented 5 years ago

Подскажите, делаю сборку в свой дистрибутив ROSA Fresh. Столкнулся с той же проблемой, ссылается на mkdir: невозможно создать каталог «/usr/lib/osgPlugins-3.7.0/»: Отказано в доступе

я поставил у себя chmod 777 на эту папку

SergeyDjam commented 5 years ago
  1. 0777 это же костыль и очень плохой костыль
  2. папки такой нет как класса, потому что в системе стоит osg 3.4.0. Сейчас озаботился сборкой 3.6.4 актуальной версии. 3.7.0 в принципе нигде нет..
  3. так как сборка будет осуществляться в сборочной, где используются контейнеры, с отсутствием принципиальной возможности поднять права, то смена прав на системные папки отсутствует. Поэтому вопрос более сложный
maisvendoo commented 5 years ago
  1. 0777 это же костыль и очень плохой костыль

Согласен

  1. папки такой нет как класса, потому что в системе стоит osg 3.4.0. Сейчас озаботился сборкой 3.6.4 актуальной версии. 3.7.0 в принципе нигде нет..

Есть для арча в ауре мой пакет openscenegraph-dev

SergeyDjam commented 5 years ago

openscenegraph-dev не поделитесь ссылкой на исходники?

maisvendoo commented 5 years ago

не поделитесь ссылкой на исходники?

OSG или PKGBUILD? Сам движок, его исходники тут https://github.com/openscenegraph/OpenSceneGraph А PKGBUILD вот он https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=openscenegraph-dev по сути сценарий сборки пакета для арча

SergeyDjam commented 5 years ago

не поделитесь ссылкой на исходники?

OSG или PKGBUILD? Сам движок, его исходники тут https://github.com/openscenegraph/OpenSceneGraph А PKGBUILD вот он https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=openscenegraph-dev по сути сценарий сборки пакета для арча Вы берете ветку master, верно понимаю? Тогда, ок, попробую из мастера собрать

maisvendoo commented 5 years ago

Вы берете ветку master, верно понимаю? Тогда, ок, попробую из мастера собрать

master

OSG собирается безо всяких проблем под линухой. Вот с мингв пришлось поковырятся

shurshur commented 5 years ago

Сборка под Ubuntu (в моём случае 18.04, но должно работать примерно под любыми версиями):

sudo apt install libqtbase5-dev libopenscenegraph-dev libopenal-dev
sudo mkdir /usr/lib/osgPlugins-3.7.0
sudo chown `whoami` /usr/lib/osgPlugins-3.7.0
mkdir RRSbuild
cd RRSbuild
git clone https://github.com/maisvendoo/RRS.git --depth=1 --recurse
cd RRS
qmake
make
cd ..
git clone https://github.com/maisvendoo/RRS-data.git data
ln -s RRS/cfg
ln -s RRS/themes
mkdir logs

Если не находит osg::PIf при сборке, значит, в системе старая версия OpenSceneGraph, но это легко решается патчем https://gist.github.com/shurshur/3e5456bfd6f83404f386d6e996c979dd

Из win-версии (можно установить в wine) берём каталог c:\rrs\routes и копируем его в RRSbuild/routes, аналогично поступаем с c:\rrs\fonts.

Запуск с учётом всех глюков:

cd RRSbuild/bin
PATH=`pwd`:$PATH LD_LIBRARY_PATH=`pwd`/../lib ./launcher

Если что-то пошло не так - смотрим логи в logs. В особенно тяжёлых случаях медитируем над strace.

Делать make install при такой неупорядоченности всего что только можно я постеснялся :)

Тикеты на решение хотя бы некоторых проблем #13 #14 #15

SergeyDjam commented 5 years ago

Собрал у себя OSG из мастера, теперь сборка падает с такой ошибкой:

&& make -f Makefile 
make[2]: вход в каталог «/mnt/cl/home/admin/rpmbuild/BUILD/RRS-1.0.1/viewer/osgdb_dmd»
g++ -c -O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC -DPIC -fPIC -std=gnu++11 -Wall -W -fPIC  -I. -Iinclude -I/usr/lib64/qt5/mkspecs/linux-g++-64 -o dmd-parser.o src/dmd-parser.cpp
In file included from /usr/include/osg/Texture:20:0,
                 from /usr/include/osg/Camera:21,
                 from /usr/include/osg/View:17,
                 from /usr/include/osg/RenderInfo:18,
                 from /usr/include/osg/Drawable:21,
                 from include/dmd-mesh.h:5,
                 from include/dmd-parser.h:4,
                 from src/dmd-parser.cpp:1:
/usr/include/osg/GraphicsContext:150:26: ошибка: «Affinity» in namespace «OpenThreads» does not name a type
             OpenThreads::Affinity affinity;
                          ^
In file included from /usr/include/osg/View:17:0,
                 from /usr/include/osg/RenderInfo:18,
                 from /usr/include/osg/Drawable:21,
                 from include/dmd-mesh.h:5,
                 from include/dmd-parser.h:4,
                 from src/dmd-parser.cpp:1:
/usr/include/osg/Camera:545:54: ошибка: «Affinity» in namespace «OpenThreads» does not name a type
         void setProcessorAffinity(const OpenThreads::Affinity& affinity);
                                                      ^
/usr/include/osg/Camera:546:22: ошибка: «Affinity» in namespace «OpenThreads» does not name a type
         OpenThreads::Affinity& getProcessorAffinity() { return _affinity; }
                      ^
/usr/include/osg/Camera:547:28: ошибка: «Affinity» in namespace «OpenThreads» does not name a type
         const OpenThreads::Affinity& getProcessorAffinity() const { return _affinity; }
                            ^
/usr/include/osg/Camera:853:22: ошибка: «Affinity» in namespace «OpenThreads» does not name a type
         OpenThreads::Affinity               _affinity;
                      ^
make[2]: *** [Makefile:335: dmd-parser.o] Ошибка 1
make[2]: выход из каталога «/mnt/cl/home/admin/rpmbuild/BUILD/RRS-1.0.1/viewer/osgdb_dmd»
make[1]: *** [Makefile:49: sub-osgdb_dmd-make_first-ordered] Ошибка 2
make[1]: выход из каталога «/mnt/cl/home/admin/rpmbuild/BUILD/RRS-1.0.1/viewer»
make: *** [Makefile:796: sub-viewer-make_first-ordered] Ошибка 2

Не очень понимаю, как это пофиксить

mehan-l commented 5 years ago

Всем доброго времени суток, не подскажите, как установить libqtbase5-dev, а то при попытке это сделать появляется Невозможно найти пакет libqtbase5-dev.

einhander commented 5 years ago

@mehan-l в дебиане это qtbase5-dev

mehan-l commented 5 years ago

а в убунту?

einhander commented 5 years ago

@mehan-l в убунту пакет здесь https://lmgtfy.com/?q=qtbase5-dev+ubuntu&s=g&iie=1

mehan-l commented 5 years ago

ок, спасибо

rodinf commented 4 years ago

Make вылетает с таким выводом: Project ERROR: Unknown module(s) in QT: serialbus Makefile:711: recipe for target 'sub-modbus-make_first-ordered' failed make[1]: *** [sub-modbus-make_first-ordered] Error 3 make[1]: Leaving directory '/home/fedor/Desktop/rrs/rrsbuild/RRS/simulator' Makefile:368: recipe for target 'sub-simulator-make_first-ordered' failed make: *** [sub-simulator-make_first-ordered] Error 2

Как исправить?

SergeyDjam commented 4 years ago

v1.0.4 mv: cannot create regular file '/usr/lib64/osgPlugins-3.7.0/osgdb_dmd.so': Permission denied make[2]: [Makefile:186: /usr/lib64/osgPlugins-3.7.0/osgdb_dmd.so] Error 1 (ignored) make[2]: Leaving directory '/home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer/osgdb_dmd' cd library/ && ( test -e Makefile || /usr/bin/qmake-qt5 -o Makefile /home/builder/rpmbuild/BUILD/RRS-1.0.4/viewer/library/library.pro libsuff=64 'QMAKE_CFLAGS=-O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC -DPIC -fPIC' 'QMAKE_CXXFLAGS=-O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC -DPIC -fPIC' QMAKE_CXXFLAGS_RELEASE= 'QMAKE_LFLAGS= -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags -Wl,--hash-style=gnu' ) && /usr/bin/make -f Makefile make[2]: Entering directory '/home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer/library' g++ -c -O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC -DPIC -fPIC -std=gnu++11 -D_REENTRANT -Wall -W -fPIC -DLIBRARY_LIB -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I../../../viewer/library -I. -I../../../common-headers -I../../../filesystem/include -I../../../viewer/library/include -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib64/qt5/mkspecs/linux-g++-64 -o library.o ../../../viewer/library/src/library.cpp rm -f liblibrary.so.1.0.0 liblibrary.so liblibrary.so.1 liblibrary.so.1.0 g++ -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags -Wl,--hash-style=gnu -Wl,-O1 -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags -Wl,--hash-style=gnu -shared -Wl,-soname,liblibrary.so.1 -o liblibrary.so.1.0.0 library.o -L/usr/X11R6/lib64 -losg -losgDB -L../../../lib -lfilesystem -lQt5Gui -lQt5Core -lGL -lpthread library.o: In functionLibrary::load()': /home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer/library/../../../viewer/library/src/library.cpp:54: undefined reference to dlopen' library.o: In functionLibrary::resolve(std::__cxx11::basic_string<char, std::char_traits, std::allocator >)': /home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer/library/../../../viewer/library/src/library.cpp:77: undefined reference to `dlsym' collect2: error: ld returned 1 exit status make[2]: [Makefile:189: ../../../lib/liblibrary.so.1.0.0] Error 1 make[2]: Leaving directory '/home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer/library' make[1]: [Makefile:92: sub-library-make_first-ordered] Error 2 make[1]: Leaving directory '/home/builder/rpmbuild/BUILD/RRS-1.0.4/build/viewer' make: *** [Makefile:928: sub-viewer-make_first-ordered] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.99930 (%build)

RPM build errors: Bad exit status from /var/tmp/rpm-tmp.99930 (%build) ` и снова проблема

SergeyDjam commented 4 years ago

v1.0.6 все также проблема сборки под Linux

svofski commented 3 years ago

В рецепте @shurshur на Linux Mint мне для полного успеха не хватило: apt install libqt5serialbus5-dev libqt5serialport5-dev

SergeyDjam commented 2 months ago

Можно упаковать в appimage чтобы не заморачиваться со сборкой на зоопарке дистрибутивов. Пользователи ленивы, собирать из сырцов будет 1 из 10.

я пытаюсь собрать, да не выходит