На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> сборка fgfs-atlas
    Не получается собрать 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?
      ExpandedWrap disabled
        export LDFLAGS=-l<имя библиотеки simgear, содержащей указанные функции> -L<путь до нее>

      Например если библиотека называется libsg и лежит в /usr/lib,
      ExpandedWrap disabled
        export LDFLAGS=-lsg -L/usr/lib

      Делать перед configure
        Вообще-то, для Linux разумнее было бы сделать ldconfig. В этом случае кеш разделяемых библиотек будет перестроен. Если библиотеки устанавливались по стандартным каталогам, то их подтянет в ld.so.conf. Отпадёт нужда в принудительном указании каталога.
          Сделал как посоветовал Мяут-Настоящий, но не прокатило... Те же ошибки выдает. Кстати при конфигурировании обратил внимание вот на эти строки:
          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.
          Каталог установки не стандартный!
            Вообщем, домучал я этот атлас всё-таки... На французском форуме прочитал, что "стабильный" пакет с исходниками содержит ошибки, так же там рекомендовали скачать исходники из 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
            Спасибо всем, кто принимал участие в решении данного вопроса. Тема закрыта.
            Сообщение отредактировано: serchik -
              Собрал атлас и из исходников. Поступил следующим образом. Во-первых, подключил заголовочный файл #include <cstdlib> в файле fg_mkdir.cxx для того, чтобы компилятор не ругался на неопределенную функцию system(). И во-вторых, "ручками" допилил Makefile, добавив библиотеку libstructure.a в переменные Atlas_LDADD, Map_LDADD, MapPS_LDADD:
              ExpandedWrap disabled
                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.
              Сообщение отредактировано: serchik -
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0616 ]   [ 15 queries used ]   [ Generated: 20.04.24, 02:47 GMT ]