Build the Viewer on Linux

From Second Life Wiki
Revision as of 04:22, 20 December 2006 by Tofu Linden (talk | contribs) (reformatting and clarifications)
Jump to navigation Jump to search

Installing the required dependancies

Paths and package names are based on Ubuntu 6.06.

Packages to install before you begin

Copy headers and libraries into the source tree

$ cp -a /usr/include/apr-1.0/ ${SLSRC}/libraries/i686-linux/include/apr-1
$ mkdir ${SLSRC}/libraries/i686-linux/include/expat
$ cp -a /usr/include/expat*.h ${SLSRC}/libraries/i686-linux/include/expat
$ mkdir ${SLSRC}/libraries/i686-linux/include/zlib
$ cp -a /usr/include/zlib*.h ${SLSRC}/libraries/i686-linux/include/zlib/
$ mkdir ${SLSRC}/libraries/i686-linux/include/openjpeg
$ cp ${OPENJPEG}/libopenjpeg/openjpeg.h ${SLSRC}/libraries/i686-linux/include/openjpeg/
$ cp ${OPENJPEG}/libopenjpeg.a ${SLSRC}/libraries/i686-linux/lib_release_client/
$ cp ${FMOD}/api/inc/* ${SLSRC}/libraries/i686-linux/include/
$ cp ${FMOD}/api/libfmod-3.75.so ${SLSRC}/libraries/i686-linux/lib_release_client/
$ mkdir ${SLSRC}/libraries/i686-linux/include/ELFIO
$ cp ${ELFIO}/ELFIO/*.h ${SLSRC}/libraries/i686-linux/include/ELFIO/
$ cp ${ELFIO}/ELFIO/libelfio.so ${SLSRC}/libraries/i686-linux/lib_release_client/
$ mkdir ${SLSRC}/libraries/i686-linux/include/jpeglib
$ cp -a /usr/include/j*.h ${SLSRC}/libraries/i686-linux/include/jpeglib/
$ touch ${SLSRC}/libraries/i686-linux/include/jpeglib/jinclude.h
$ mkdir ${SLSRC}/libraries/i686-linux/include/llfreetype2
$ cp -a /usr/include/freetype2/freetype/ ${SLSRC}/libraries/i686-linux/include/llfreetype2/
$ cp -a /usr/include/ft2build.h ${SLSRC}/libraries/i686-linux/include/llfreetype2/freetype/
$ cp -a /usr/include/atk-1.0 ${SLSRC}/libraries/i686-linux/include/
$ cp -a /usr/include/gtk-2.0 ${SLSRC}/libraries/i686-linux/include/
$ cp -a /usr/lib/gtk-2.0/include/* ${SLSRC}/libraries/i686-linux/include/gtk-2.0/
$ cp -a /usr/include/glib-2.0 ${SLSRC}/libraries/i686-linux/include/
$ cp -a /usr/lib/glib-2.0/include/* ${SLSRC}/libraries/i686-linux/include/glib-2.0/
$ cp -a /usr/include/pango-1.0 ${SLSRC}/libraries/i686-linux/include/

if your GTK is fairly recent and thus needs Cairo:

$ cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include/

Compiling

$ cd indra
$ scons DISTCC=no BTARGET=client BUILD=release

  • resulting unstripped binary is then newview/secondlife-i686-bin

Running from inside the tree

  • preparing to run 'in-tree'
    • ensure you have indra/newview/app_settings/static_*.db2 - if not, you'll find it in the 'binary-common' package.

$ cp ../../scripts/messages/message_template.msg app_settings/

  • running it!

$ ( cd newview && LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin )

Packaging the client

This doesn't work 'out of the box' as an automated process right now.


OLD Ubuntu build notes - may be incorrect

Ubuntu 5.10 and higher uses a newer version of libc6 with a bug fix that breaks our codebase. If you see errors of the form:

   obj_dat.c:(.text+0x857): undefined reference to `__ctype_b'

...when you try to build our codebase then you need to enable the CTYPE_WORKAROUND. If you use 'make' or 'dmake', add the following lines to your ~/.bashrc file:

   export SIMULATOR_CPPFLAGS="-DCTYPE_WORKAROUND"
   export RPCSERVER_CPPFLAGS="-DCTYPE_WORKAROUND"
   export DATASERVER_CPPFLAGS="-DCTYPE_WORKAROUND"
   export USERSERVER_CPPFLAGS="-DCTYPE_WORKAROUND"
   export TEST_CPPFLAGS="-DCTYPE_WORKAROUND"

If you use 'scons', add the follow line to your ~/.bashrc file:

   export SERVER_CPPFLAGS="-DCTYPE_WORKAROUND"

Source your ~/.bashrc, or open a new terminal, and build again.