Compiling 64bit issues

This is documentation of issues while compiling 64bit on Linux.

Feel free to add more, to add solutions and to add useful links. Er ... and to let this page look nicer, of course :)

Default build
Since early 2010 Imprudence builds on Linux 64bit are started the same way as the 32bit builds: from the Imprudence/linden/indra directory open a console type in: ./develop.py && ./develop.py build

please go to How_to_compile for further reading.

"Standalone" build
Important note: since Imprudence builds by default as non-standalone on Linux 64bit the following part of this article wasn't updated and is most likely out of date. Keeping it because the one or the other issue might be of interest for anybody who *wants* a standalone build. If you are reading here because you are used to build other viewers standalone because their default build is broken for Linux 64bit: please read on the chapter above: Default build.

various headers not found
like: etc...
 * linden/indra/llrender/llfont.cpp:41:44: llfreetype2/freetype/ft2build.h: No such file or directory
 * linden/indra/llwindow/llwindowsdl.cpp:49:22: gtk/gtk.h: No such file or directory

Solution: start building with the command: ./develop.py --standalone build

glh_linear.h not found
get it from http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-linux-20080613.tar.bz2 and unpack in /pathtoyour/imprudence/linden/

'glActiveTextureARB' was not declared in this scope
installing nvidia drivers replaces the GL/gl.h headers.

its necessary to use the ones from the mesa-libGL-devel. Nividia should be installed with --no-opengl-headers to avoid corrupting the working headers. Or reinstall the mesa-libGL-devel packages after nvidia drivers.

Its awkward that SecondLife, which requires NVidia hardware, can't work with the NVidia headers.

This workaround should be mentioned in build notes (or perhaps it is and I missed it?).

gentoo users can run "eselect opengl set xorg-x11" be sure to change it back to "eselect opengl set nvidia" after compiling.

ndofdev_external.h not found
I. see VWR-10579, II. 1 - Download source for libndofdev http://www.aaue.dk/~janoc/files/software/linux/spacenav/libndofdev-0.2.tar.gz 2 - extract and run make 3 - cp the ndofdev_external.h to /usr/local/include 4 - cp the libndofdev.a to /usr/local/lib

or figure out how to disable 3d space navigator / joystick support in the build configuration. -Take linux out of the ndof cmake file or take ndof out of all cmake files (containing ndof) ? (I don't try, need the blue LEDs to see my keyboard :P )

LLXMLRPCTransaction CURL error 60:
WARNING: process: LLXMLRPCTransaction CURL error 60: server certificate verification failed. CAfile: WARNING: process: LLXMLRPCTransaction request URI: https://login.agni.lindenlab.com/cgi-bin/login.cgi

fix is to downgrade gnutls-2.6.4 to gnutls-2.6.3

"HAVE_STDLIB_H" redefined
Multiple errors like this: In file included from /......./..././//SDL/SDL_stdinc.h:28 from /......./..././//SDL/SDL_syswm.h:28 from /......./..././/./..// from /......./.../././/.// /./....//.///..///..//SDL/SDL_config.h:67:1: warning: "HAVE_STDLIB_H" redefined In file included from /......./..././//SDL/SDL_stdinc.h:28 from /......./..././//SDL/SDL_syswm.h:28 from /......./..././/./..// from /......./.../././/.// /./.././libraries/jpeglib/jconfig.h:12:1: warning: this is the location of the previous definition

THE FIX = Edit jconfig.h and remove the 2 defines. Remove: #define HAVE_STDDEF_H #define HAVE_STDLIB_H

Debian has been doing this since 2002

however, this doesn't block gcc-4.3 anymore so not a big deal. If you want to get rid of errors though run the fix.

get LLMozlib
for Debian based distros its possible to add the repos from http://omvviewer.byteme.org.uk/ and to sudo apt-get build-dep omvviewer

TODO: how to get it for other distros, how to compile it

http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llmozlib-linux64-20080909.tar.bz2 gives me "wrong version".

to get the source: svn co http://svn.secondlife.com/svn/llmozlib/trunk/llmozlib2

follow README-linux.txt to compile (and have something else to do for a while). maybe hack that warnings are not treated as errors.

for Gentoo distros you can get an ebuild from http://gentoo-overlays.zugaina.org/secondlife/portage/net-libs/llmozlib2/llmozlib2-9999.ebuild "ccache" package is needed for installation

adding (32bit) voice
my results with that where not good, but maybe someone else has more luck:
 * copy SLVoice from an LL(tm) client to imprudence/bin/ ; you need to get it from the version your Imprudence is based on, 1.21.6 and 1.22.11 voice are incompatible, at the time writing this (03/31/09) 1.21.6  is the right one for a build based on the main Imprudence repo.
 * for standalone build: create imprudence/lib/
 * copy libuuid.so.1 libopenal.so.1 libalut.so libortp.so libvivoxsdk.so from an LL(tm) client to imprudence/lib/

rewriting to "real" 64bit
TODO:
 * Find persons who know how to do it.
 * Let them do it and/or explain what is exactly to do.
 * Do it.
 * commit.
 * push.
 * now ;)

HOWTOs
http://wiki.secondlife.com/wiki/User:Cron_Stardust

Jiras, unspecific
http://jira.secondlife.com/browse/VWR-12656 Linux64 pacakges are incomplete in install.xml
 * https://jira.secondlife.com/browse/VWR-9005 glh/glh_linear.h should be included with viewer source not as an extra lib
 * https://jira.secondlife.com/browse/VWR-9499 Cmake fails to find DBus librarys during compile.
 * http://jira.secondlife.com/browse/VWR-9557 a standalone build fails on Fedora with NVIDIA graphics driver: 'glActiveTextureARB' was not declared in this scope
 * https://jira.secondlife.com/browse/VWR-10579 Linux NDOF source is not provided by LL.

LLMozlib2

 * http://jira.secondlife.com/browse/VWR-2977 LlMozLib use standalone system xulrunner and create shared library
 * http://jira.secondlife.com/browse/VWR-8571 llmozlib2 build tool step
 * http://jira.secondlife.com/browse/VWR-9256 Compiling 1.21 standalone without llmozlib fails.

to be continued...