Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.51.117] |
|
Сообщ.
#1
,
|
|
|
Не получается собрать fgfs-atlas. Для тех "кто не в танке", поясню fgfs-atlas содержит два приложения: одно (Map) для генерирования карт в opensource-симуляторе flightgear; другое (Atlas) - для отображения текущего позиционирования воздушного судна, аэропортов и др. Сам flightgear собрал успешно, но fgfs-atlas не собирается. Сначала я пропатчил исходники, ибо они содержат ошибки. Далее получаю ошибки:
Скрытый текст /home/serchik/Download/src/FlightGear/flightgear/lib/libsgtiming.a(timezone.o): In function `SGTimeZoneContainer': /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `sg_exception::sg_exception(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `sg_exception::~sg_exception()' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `typeinfo for sg_exception' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `sg_exception::sg_exception(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `sg_exception::~sg_exception()' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/timezone.cxx:133: undefined reference to `typeinfo for sg_exception' /home/serchik/Download/src/FlightGear/flightgear/lib/libsgtiming.a(lowleveltime.o): In function `fgtzset_internal': /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/lowleveltime.cxx:343: undefined reference to `sg_exception::sg_exception(char const*, char const*)' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/lowleveltime.cxx:343: undefined reference to `sg_exception::~sg_exception()' /home/serchik/Download/src/FlightGear/SimGear-2.0.0/simgear/timing/lowleveltime.cxx:343: undefined reference to `typeinfo for sg_exception' collect2: ld returned 1 exit status make[3]: *** [Atlas] Ошибка 1 make[3]: Выход из каталога `/home/serchik/Download/src/FlightGear/Atlas-0.3.0/src' make[2]: *** [all-recursive] Ошибка 1 make[2]: Выход из каталога `/home/serchik/Download/src/FlightGear/Atlas-0.3.0/src' make[1]: *** [all] Ошибка 2 make[1]: Выход из каталога `/home/serchik/Download/src/FlightGear/Atlas-0.3.0/src' make: *** [all-recursive] Ошибка 1 Т.е. ошибка возникает из-за якобы отсутствующих ссылок на методы класса sg_exception пакета SimGear-2.0.0, который я предварительно успешно собрал и утановил. Как собрать fgfs-atlas? |
Сообщ.
#2
,
|
|
|
export LDFLAGS=-l<имя библиотеки simgear, содержащей указанные функции> -L<путь до нее> Например если библиотека называется libsg и лежит в /usr/lib, export LDFLAGS=-lsg -L/usr/lib Делать перед configure |
Сообщ.
#3
,
|
|
|
Вообще-то, для Linux разумнее было бы сделать ldconfig. В этом случае кеш разделяемых библиотек будет перестроен. Если библиотеки устанавливались по стандартным каталогам, то их подтянет в ld.so.conf. Отпадёт нужда в принудительном указании каталога.
|
Сообщ.
#4
,
|
|
|
Сделал как посоветовал Мяут-Настоящий, но не прокатило... Те же ошибки выдает. Кстати при конфигурировании обратил внимание вот на эти строки:
Plib not specified SimGear not specified FlightGear base package location not specified checking for extra include and lib directories... + found /home/serchik/Download/src/FlightGear/flightgear/include + found /home/serchik/Download/src/FlightGear/flightgear/bin + found /usr/local//include + found /usr/local//lib + found /usr/local//bin Т.е. не находит ни Plib, ни SimGear, ни FlightGear. Каталог установки не стандартный! |
Сообщ.
#5
,
|
|
|
Вообщем, домучал я этот атлас всё-таки... На французском форуме прочитал, что "стабильный" пакет с исходниками содержит ошибки, так же там рекомендовали скачать исходники из CVS-репозитария, что я и сделал. Кстати патчить исходники не пришлось, что удивительно, ибо версии Atlas-0.3.1(0.3.0 0.2.2) содержат одни и те же ошибки. После этого Atlas успешно собрался, но не запустился, поскольку при инсталяции не копируются файлы и папки с данными в $FG_ROOT/Atlas, а именно: папки - Fonts, Palettes; файлы - airplaine_image.png, background.jpg, лежащие в каталоге c исходниками src/data. Atlas претерпел большие изменения. Единствееное что пока не удалось, так это сгенерировать текстуры утилитой Map, но лиха беда начало. Кстати, при конфигурации также не следует забывать указывать пути к simgear и fg-base:
./configure --with-simgear=/path/to/simgear --with-fgbase=/path/to/fgbase Спасибо всем, кто принимал участие в решении данного вопроса. Тема закрыта. |
Сообщ.
#6
,
|
|
|
Собрал атлас и из исходников. Поступил следующим образом. Во-первых, подключил заголовочный файл #include <cstdlib> в файле fg_mkdir.cxx для того, чтобы компилятор не ругался на неопределенную функцию system(). И во-вторых, "ручками" допилил Makefile, добавив библиотеку libstructure.a в переменные Atlas_LDADD, Map_LDADD, MapPS_LDADD:
Atlas_LDADD = \ -lsgmagvar -lsgtiming -lsgmisc -lsgio -lsgserial -lsgdebug -lsgbucket -lsgstructure \ -lsgxml -lplibsg -lplibpu -lplibul -lplibfnt -lplibnet \ $(opengl_LIBS) \ -lpng -lz -lpthread -ljpeg Map_LDADD = \ -lsgmagvar -lsgtiming -lsgmisc -lsgio -lsgdebug -lsgstructure\ -lplibsg -lplibpu -lplibul -lplibfnt -lsgbucket -lsgscreen \ $(opengl_LIBS) \ -lpng -lz -ljpeg MapPS_LDADD = \ -lsgmagvar -lsgtiming -lsgmisc -lsgio -lsgdebug -lsgstructure \ -lplibsg -lsgbucket \ -lpng -lz После чего атлас успешно собирается и устанавливается командами make и sudo make install. |