Компиляция fgsd в Ubuntu 7.10 (Gutsy)
Материал из FlightGear
Опыт сборки fgsd в Ubuntu 7.10
FGSD (FlightGear scenery designer) — инструмент создания сценариев для FGFS. Ниже описан порядок компиляции FGSD и его зависимостей, что оказалось несколько нетривиальным, по крайней мере, под Ubuntu 7.10 (Gutsy Gibbon) на платформе x86_64.
Требуемое ПО
На сайте FGSD указаны следующие зависимости:
- OpenGL или Mesa;
- FLTK 1.1.x;
- libjpeg;
- giflib;
- PLIB;
- zZIPlib;
- Shapefile C library;
- SimGear (он, в свою очередь, требует zlib);
- FLU;
- CGAL.
Дополнительно к этому в README ещё указаны pnglib и curl.
Нюансы установки
Первые семь указанных пакетов (не забывайте соответствующие -dev'ы!) вполне штатно ставятся из репозитория Ubuntu. С SimGear уже могут быть варианты. Если вы собирали FGFS 1.0.0 из исходников, то вам неизбежно пришлось собирать и соответствующий SimGear, таким образом, он у вас тоже уже присутствует. Если же вы довольствуетесь FGFS из репозитория (для Gutsy это будет версия 0.9.10), то, возможно, придётся доставить пакет simgear-dev.
FLU вообще отказалось собираться дефолтным компилятором 4.1.3, непонятно ругаясь то ли на "extra clarification", то ли на "extra qualification". Лечится двумя способами: либо прописыванием в Makefile'ы дополнительной опции компилятора "-fpermissive", либо установкой gcc и g++ версии 3.4.
CGAL, идущий в составе дистрибутива (точнее говоря, в разделе multiverse) имеет версию 3.3. fgsd 0.3.1a (последняя версия на сайте) компилироваться с ним отказался напрочь. Не помогли ни попытка сборки g++-3.4, ни даже пляски с бубном. В конце концов, с домашнего сайта была взята версия 3.1 и успешно собрана. Внимание! CGAL у меня не инсталлировалась в /usr/local, оставшись лежать там, где собралась. Поэтому пришлось внимательно читать README от fgsd, задавать fgsd'шному configure необходимые опции и линковать fgsd с libCGAL.a статически, путем временного переименования libCGAL.so на время линковки.
После успешного завершения сборки сделал make install и переименовал обратно динамическую библиотеку CGAL.
Вывод ldd результирующего бинарника
ap@home:~$ ldd `which fgsd`
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00002b8fb4b99000)
libflu.so => /usr/local/lib/libflu.so (0x00002b8fb4dbc000)
libfltk.so.1.1 => /usr/lib/libfltk.so.1.1 (0x00002b8fb502e000)
libfltk_gl.so.1.1 => /usr/lib/libfltk_gl.so.1.1 (0x00002b8fb52db000)
libz.so.1 => /usr/lib/libz.so.1 (0x00002b8fb54e5000)
libplibsg.so.1.8.4 => /usr/lib/libplibsg.so.1.8.4 (0x00002b8fb56fc000)
libplibssg.so.1.8.4 => /usr/lib/libplibssg.so.1.8.4 (0x00002b8fb5910000)
libplibul.so.1.8.4 => /usr/lib/libplibul.so.1.8.4 (0x00002b8fb5fb8000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00002b8fb61bd000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00002b8fb63e2000)
libglut.so.3 => /usr/lib/libglut.so.3 (0x00002b8fb6621000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00002b8fb6865000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00002b8fb6ae9000)
libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00002b8fb6cb4000)
libXt.so.6 => /usr/lib/libXt.so.6 (0x00002b8fb6ecd000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x00002b8fb7131000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x00002b8fb733a000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00002b8fb7556000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00002b8fb775f000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00002b8fb7971000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00002b8fb7c82000)
libm.so.6 => /lib/libm.so.6 (0x00002b8fb7f8d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002b8fb820f000)
libc.so.6 => /lib/libc.so.6 (0x00002b8fb841d000)
libXft.so.2 => /usr/lib/libXft.so.2 (0x00002b8fb8778000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00002b8fb898d000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00002b8fb8b8f000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00002b8fb8dab000)
libidn.so.11 => /usr/lib/libidn.so.11 (0x00002b8fb8fd6000)
libdl.so.2 => /lib/libdl.so.2 (0x00002b8fb9208000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00002b8fb940d000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00002b8fb9656000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x00002b8fb99d7000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0x00002b8fba42f000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00002b8fba530000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002b8fba733000)
/lib64/ld-linux-x86-64.so.2 (0x00002b8fb497b000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00002b8fba938000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00002b8fbab6d000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00002b8fbaded000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00002b8fbaff6000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00002b8fbb28a000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x00002b8fbb4b0000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00002b8fbb6b2000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00002b8fbb8ba000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00002b8fbbabd000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00002b8fbbcd2000)
ap@home:~$