Difference between revisions of "Common compilation problems"

From Second Life Wiki
Jump to navigation Jump to search
(imported possible vs2005 errors from the "how to compile page")
Line 100: Line 100:


= Linux =  
= Linux =  
==== Packaging errors ====
The final packaging step may fail with errors about the manifest if you are not using the <i>slviewer-linux-libs</i> bundle; in this case, if you still wish to end up with an end-user viewer package incorporating your own libraries, you can edit the manifest file found at <b>indra/newview/viewer_manifest.py</b>
==== Various Compilation problems ====
* "Unable to initialize communications"
** If the viewer just displays the error message " Unable to initialize communications" and exits, it can't find message_template.msg. You did remember to copy it over, right?
* Blino's SL build/linking patches for '''gcc4''': http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/secondlife/current/
* Blino's SL build/linking patches for '''gcc4''': http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/secondlife/current/
* objcopy: <b>'newview/linux_tools/exposed-symbols.txt'</b>: No such file
* objcopy: <b>'newview/linux_tools/exposed-symbols.txt'</b>: No such file
Line 118: Line 128:


* Building [https://lists.secondlife.com/pipermail/sldev/2007-January/000091.html 20070112a] using ''BUILD=releasefordownload'' I get many ''[: 89: ==: unexpected operator'' errors; ''cp: target `SecondLife_i686_1_13_1_7/app_settings/*’ is not a directory'' error, and same thing for character, fonts, help, skins, res-sdl; ''[: 111: ==: unexpected operator, [: 120: SecondLife_i686_1_13_1_7.tar.bz2: unexpected operator''. I can succesfully run the client from the source tree.
* Building [https://lists.secondlife.com/pipermail/sldev/2007-January/000091.html 20070112a] using ''BUILD=releasefordownload'' I get many ''[: 89: ==: unexpected operator'' errors; ''cp: target `SecondLife_i686_1_13_1_7/app_settings/*’ is not a directory'' error, and same thing for character, fonts, help, skins, res-sdl; ''[: 111: ==: unexpected operator, [: 120: SecondLife_i686_1_13_1_7.tar.bz2: unexpected operator''. I can succesfully run the client from the source tree.
** i think this has been fixed --[[User:Signore Iredell|Signore Iredell]] 06:09, 9 June 2007 (PDT)


* scons: *** While building `['.../linden/indra/i686-linux-client-release/lscript/lscript_compile/indra.l.cpp']': Don't know how to build a file with suffix `.l'.
* scons: *** While building `['.../linden/indra/i686-linux-client-release/lscript/lscript_compile/indra.l.cpp']': Don't know how to build a file with suffix `.l'.

Revision as of 05:09, 9 June 2007

General Problems

Windows

Compiling on MSVC 2003

Error code from "Copying message template"

  • 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;


Unresolved external symbol _CLSID_DxDiagProvider/_IID_IDxDiagProvider

  • 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


Cannot open include file: 'ytab.h': No such file or directory

  • indra.l (20) : fatal error C1083: Cannot open include file: 'ytab.h': No such file or directory.

Workaround: copy "linden\indra\lscript\lscript_compile\ytab.hpp" to "linden\indra\lscript\lscript_compile\ytab.h" and build again.


Cannot open input file 'dxguid.lib'

  • fatal error LNK1181: cannot open input file 'dxguid.lib' in ...

If you are using the most recent DirectX SDK ("December 2006"), your VC++ Libraries Directory may be wrong because the SDK's lib folder now has 2 sub-folders for x64 and x86. Try changing the path from.

    C:\Program Files\Microsoft DirectX SDK (December 2006)\Lib

to

    C:\Program Files\Microsoft DirectX SDK (December 2006)\Lib\x86


Missing resources

  • .\res\newViewRes.rc(64) : error RC2135 : file not found: ll_icon.ico

Some releases have missing files, which were reported to be last seen in the 1.14.0.1 release.

  • Go to the source downloads page and grab the [1.14.0.1 viewer] sources.
  • Explore the archive to "linden/indra/newview/res" folder and extract content to your "linden/indra/newview/res" folder into current revision.


Compiling on MSVC 2005

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

What sort of errors are seen?

Error opening dxguid.lib

  • fatal error LNK1181: cannot open input file 'dxguid.lib' in win_crash_logger

If you are using the most recent DirectX SDK ("December 2006"), your VC++ Libraries Directory may be wrong because the SDK's lib folder now has 2 sub-folders for x64 and x86. Try changing the path from.

    C:\Program Files\Microsoft DirectX SDK (December 2006)\Lib

to

    C:\Program Files\Microsoft DirectX SDK (December 2006)\Lib\x86


Missing resources

When compiling resources, it fail with several errors, the first being

  • .\res\newViewRes.rc(64) : error RC2135 : file not found: ll_icon.ico

These files are part of the artwork package available on the source download page. Download and unpack the artwork package from your source root.


Cannot open include file: 'windows.h'

If you run into this problem:

..\..\..\boost/regex/v4/fileiter.hpp(44) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory

Fix it with this: (thanks Fairlight!)

set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%
set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%


Other (older) notes

  • Mozilla is not compatible with visual studio 2005, so we have not migrated the codebase, so we do not know if it works.
  • 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.

Linux

Packaging errors

The final packaging step may fail with errors about the manifest if you are not using the slviewer-linux-libs bundle; in this case, if you still wish to end up with an end-user viewer package incorporating your own libraries, you can edit the manifest file found at indra/newview/viewer_manifest.py

Various Compilation problems

  • "Unable to initialize communications"
    • If the viewer just displays the error message " Unable to initialize communications" and exits, it can't find message_template.msg. You did remember to copy it over, right?
  • 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: install the zlib development headers first and try recompiling. Commenting out those lines results in a error indra.l:666: undefined reference to `yyparse', after the zlib headers are installed.
  • 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.
  • Building 20070112a using BUILD=releasefordownload I get many [: 89: ==: unexpected operator errors; cp: target `SecondLife_i686_1_13_1_7/app_settings/*’ is not a directory error, and same thing for character, fonts, help, skins, res-sdl; [: 111: ==: unexpected operator, [: 120: SecondLife_i686_1_13_1_7.tar.bz2: unexpected operator. I can succesfully run the client from the source tree.
  • scons: *** While building `['.../linden/indra/i686-linux-client-release/lscript/lscript_compile/indra.l.cpp']': Don't know how to build a file with suffix `.l'.
    • You probably don't have all the dependencies installed (I had the same problem). Check that you have flex and bison. --Random73 Janus 07:43, 16 May 2007 (PDT)
  • 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')'
    g++-3.4 -shared *.o -o libelfio.so
    /usr/bin/ld: ELFIDynamic.o: relocation R_X86_64_32 against `a local symbol' can 
    not be used when making a  shared object; recompile with -fPIC
    ELFIDynamic.o: could not read symbols: Bad value