Difference between revisions of "Build the Viewer on Linux"

From Second Life Wiki
Jump to navigation Jump to search
(Some better formatting.)
(reformatting and clarifications)
Line 1: Line 1:
{{CompileNav}}
{{CompileNav}}


These are raw notes.  Will prettify them later.
== Installing the required dependancies ==
 
Paths and package names are based on Ubuntu 6.06.
Paths and package names are based on Ubuntu 6.06.
=== Packages to install before you begin ===


* install scons [scons]
* install scons [scons]
Line 10: Line 13:
* install aprutil-1 [libaprutil1.0-dev]
* install aprutil-1 [libaprutil1.0-dev]
* install xmlrpc-epi 0.51 <http://xmlrpc-epi.sourceforge.net/>
* install xmlrpc-epi 0.51 <http://xmlrpc-epi.sourceforge.net/>
** note: not xmlrpc-c
** note: not xmlrpc-c (xmlrpc-c has a library and headers with the same name but is not compatible)
* install jpeglib [libjpeg62-dev]
* install jpeglib [libjpeg62-dev]
* install SDL [libsdl1.2-dev]
* install SDL [libsdl1.2-dev]
Line 18: Line 21:
* build ELFIO <http://sourceforge.net/projects/elfio/>
* build ELFIO <http://sourceforge.net/projects/elfio/>
* build OpenJPEG <http://www.openjpeg.org/>
* build OpenJPEG <http://www.openjpeg.org/>
=== Copy headers and libraries into the source tree ===


<code>
<code>
Line 57: Line 62:
  $ cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include/
  $ cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include/
</code>
</code>
------------------------


BUILDING
== Compiling ==


<code>
<code>
Line 67: Line 71:
* resulting unstripped binary is then newview/secondlife-i686-bin
* resulting unstripped binary is then newview/secondlife-i686-bin


------------------------
== Running from inside the tree ==
 
RUNNING FROM INSIDE THE TREE


* preparing to run 'in-tree'
* preparing to run 'in-tree'
Line 81: Line 83:
  $ ( cd newview && LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin )
  $ ( cd newview && LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin )
</code>
</code>
------------------------


PACKAGING
== Packaging the client ==


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





Revision as of 05:22, 20 December 2006

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.