Difference between revisions of "Common compilation problems"

From Second Life Wiki
Jump to navigation Jump to search
Line 59: Line 59:
** two residents report good luck on Gentoo after doing 'eselect opengl set xorg-x11' (<b>but note!!</b> You must know what you're doing; this may change your default system OpenGL drivers, and you will probably want to change them back again after the compile, e.g. 'eselect opengl set nvidia')'
** two residents report good luck on Gentoo after doing 'eselect opengl set xorg-x11' (<b>but note!!</b> You must know what you're doing; this may change your default system OpenGL drivers, and you will probably want to change them back again after the compile, e.g. 'eselect opengl set nvidia')'
** Tofu says... 'Try removing the space in ' ../libraries/' around line 121 of indra/SConstruct'
** Tofu says... 'Try removing the space in ' ../libraries/' around line 121 of indra/SConstruct'
* Something like: <b>/usr/bin/ld: cannot find -lz</b>
** Nadia says: Install the zlib development headers. (Ubuntu package zlib1g-dev, Red Hat zlib-devel.)


* Something like: indra.y.cpp:17: <b>error: previous declaration of `int yyparse()'</b>
* Something like: indra.y.cpp:17: <b>error: previous declaration of `int yyparse()'</b>
** Tofu says... 'This appears to be a problem with some versions of flex/bison.  A resident reports success when comment out the <i>#ifdef __cplusplus</i> lines in lscript/lscript_compile/indra.y'
** Tofu says... 'This appears to be a problem with some versions of flex/bison.  A resident reports success when comment out the <i>#ifdef __cplusplus</i> lines in lscript/lscript_compile/indra.y'
 
** Nadia says: try installing the zlib development headers first. Commenting out those lines results in a error indra.l:666: <b>undefined reference to `yyparse'</b>, after the zlib headers are installed.
* Something like: <b>/usr/bin/ld: cannot find -lz</b>
** Install the zlib development headers. (Ubuntu package zlib1g-dev, Red Hat zlib-devel.)


* Compiler can't find <b>gtk/gtk.h</b>, but it's right there!
* Compiler can't find <b>gtk/gtk.h</b>, but it's right there!

Revision as of 02:06, 11 January 2007

General Problems

Windows

Compiling on MSVC 2003

  • newview error PRJ0019: A tool returned an error code from "Copying message template"

This is caused by the script trying to do a copy command, but the source path isn't in quotes. Open up newview.vcproj in notepad, and near the bottom there are 4 line that say:

    CommandLine="copy $(InputPath) .\app_settings\message_template.msg

replace them with

    CommandLine="copy &quot;$(InputPath)&quot; .\app_settings\message_template.msg

The source and destination paths on line 158 may also require wrapping in quotes. In which case:

    CommandLine="copy $(TargetDir)\$(TargetFileName) $(ProjectDir)

should become:

    CommandLine="copy &quot;$(TargetDir)\$(TargetFileName)&quot; &quot;$(ProjectDir)&quot;
  • newview error LNK2001: unresolved external symbol _CLSID_DxDiagProvider
  • newview error LNK2001: unresolved external symbol _IID_IDxDiagProvider

These errors reportedly occur with MSVC 2003 and certain versions of the DirectX SDK. To workaround, edit lldxhardware.cpp and replace the following (line 35):

    #include <dxdiag.h>

with...

    #define INITGUID
    #include <dxdiag.h>
    #undef INITGUID

Compiling on MSVC 2005

There is now a step-by-step tutorial for Microsoft Windows - Visual Studio 2005 & Visual C++ 2005 Express

Mozilla is not compatible with visual studio 2005, so we have not migrated the codebase, so we do not know if it works.

What sort of errors are seen?

  • To minimize the number of warnings for now: in C/C++-Preprocessor add ';_CRT_SECURE_NO_DEPRECATE' to the Preprocessor Definitions, that will supress deprecation warnings --Artm Udal 12:42, 8 January 2007 (PST)

Mac OS X

Getting:

  • /linden/indra/newview/../llwindow/llglheaders.h:377:31: error: GL/glh_extensions.h: No such file or directory
    • This means you didn't merge the libraries right.
  • /linden/indra/various-math-files: error: `isfinite' undeclared in namespace `std'
    • Upgrade Xcode to 2.4.1

Linux

  • From Mako Mabellon: Having a bit of trouble with ELFIO 1.0.3 under Linux - it wants to build a static library libELFIO.a, and Second Life appears to expect a shared library libelfio.so (judging from the build instructions on the Wiki)...
    • Tofu says... 'You can rename the library to have the right case. I don't know why ours ended up lower-case and yours is upper-case - I'll look into it.'
  • Something like: error: extra qualification 'LLMessageSystem::' on member 'init'
    • Tofu says... 'This is likely a GCC 4.x thing. We need GCC 3.4 or thereabouts, for now. If you want to use GCC 4.x anyway, you can harmlessly remove the LLMessageSystem:: from the troublesome line. Other stuff will need fixing too; people are on it!'
  • Something like: linden/indra/i686-linux-client-release/llrender/llimagegl.cpp:122: error: `glActiveTextureARB' was not declared in this scope
    • Tofu says... 'You'll need to install OpenGL headers if you don't already have them: gl.h, glext.h, glu.h (The ones from 'mesa' should work)
    • two residents report good luck on Gentoo after doing 'eselect opengl set xorg-x11' (but note!! You must know what you're doing; this may change your default system OpenGL drivers, and you will probably want to change them back again after the compile, e.g. 'eselect opengl set nvidia')'
    • Tofu says... 'Try removing the space in ' ../libraries/' around line 121 of indra/SConstruct'
  • Something like: /usr/bin/ld: cannot find -lz
    • Nadia says: Install the zlib development headers. (Ubuntu package zlib1g-dev, Red Hat zlib-devel.)
  • Something like: indra.y.cpp:17: error: previous declaration of `int yyparse()'
    • Tofu says... 'This appears to be a problem with some versions of flex/bison. A resident reports success when comment out the #ifdef __cplusplus lines in lscript/lscript_compile/indra.y'
    • Nadia says: try installing the zlib development headers first. Commenting out those lines results in a error indra.l:666: undefined reference to `yyparse', after the zlib headers are installed.
  • Compiler can't find gtk/gtk.h, but it's right there!
    • This is peculiar to certain SCons versions. Edit the indra/SConstruct file and remove the leading spaces from the ' ../libraries/' strings from around line 187 onwards.
  • Miscellaneous errors about classes not existing, or referencing an undefined type
    • Seems to be a difference between GCC 4 and GCC 3, with 4 being more strict about things. The solution has been adding "class TheMissingClass;" to whatever header files are missing the reference. For example I had to add "class LLUICtrlFactory;" to llui/lluictrl.h and llui/llviewborder.h
  • Linking failures ("script not found") due to spaces in the LINKFLAGS variable?
    • I saw a report, and modified the SConstruct file to drop the trailing arguments (and spaces) in LINKFLAGS.