Errors building 3.14.0 on linux

Developers
Lord Crc
2010-08-12
2012-10-31
  • Lord Crc
    Lord Crc
    2010-08-12

    Hi,

    trying to build 3.14.0 on linux but I'm running into errors. First I got the
    following:

    Source/FreeImageToolkit/Background.cpp:138: error: 'UINT_MAX' was not declared
    in this scope

    Seems limits.h isn't included correctly? I added #include <limits.h> to the
    file which sorted that error out, but it lead to another...

    Source/OpenEXR/Imath/ImathMatrix.h:1813: error: 'memset' was not declared in
    this scope

    It seems I'm doing something wrong running into all these errors... any ideas
    what it might be? I'm a bit of a linux n00b. I'm using gcc 4.4.3 on ubuntu
    10.04 x64.

    For the record, compiling on windows went smooth.

     
  • Hervé Drolon
    Hervé Drolon
    2010-08-12

    I've tested the compilation with gcc 4.1.2 under a Debian 4.0 x32 : all is OK
    for me.
    Sorry but I don't know what could be the problem ...

     
  • Lord Crc
    Lord Crc
    2010-08-12

    By including <climits> in Background.cpp and <cstring> in IlmathMatrix.h I've
    successfully compiled it. Hopefully the OpenEXR folks can fix it upstream...

    Anyway, thanks for the quick response and for a sweet library :)

     
  • tone-gun
    tone-gun
    2010-08-12

    I want to report that this problem is real! I had it too. On Debian GNU/Linux
    5.0.5 and gcc (Debian 4.3.2-1.1) 4.3.2.

     
  • Hervé Drolon
    Hervé Drolon
    2010-08-12

    This is strange that this problem wasn't reported earlier !
    I've looked at the gcc 4.3 release notes and I think that changes added by
    this version will affect many Open Source libraries.
    Can you provide the complete list of errors reported by your compiler ?

     
  • Lord Crc
    Lord Crc
    2010-08-12

    After adding the two includes as mentioned above it compiled fine (just your
    average bunch of warnings), so it seems it's only those two files which were
    affected.

    Like I said, I'm a linux n00b, so I felt I was heading up the wrong track when
    I got an error after fixing the first one...

    For completeness here are the two errors:

    g++ -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy -I. -ISource -ISource/Metadata -ISource/FreeImageToolkit -ISource/LibJPEG -ISource/LibMNG -ISource/LibPNG -ISource/LibTIFF -ISource/ZLib -ISource/LibOpenJPEG -ISource/OpenEXR -ISource/OpenEXR/Half -ISource/OpenEXR/Iex -ISource/OpenEXR/IlmImf -ISource/OpenEXR/IlmThread -ISource/OpenEXR/Imath -ISource/LibRawLite -ISource/LibRawLite/dcraw -ISource/LibRawLite/internal -ISource/LibRawLite/libraw -ISource/LibRawLite/src -fPIC -c Source/FreeImageToolkit/Background.cpp -o Source/FreeImageToolkit/Background.o
    Source/FreeImageToolkit/Background.cpp: In function int GetPaletteIndex(FIBITMAP*, const RGBQUAD*, int, FREE_IMAGE_COLOR_TYPE*):
    Source/FreeImageToolkit/Background.cpp:140: error: UINT_MAX was not declared in this scope
    make[1]: *** [Source/FreeImageToolkit/Background.o] Error 1
    make[1]: Leaving directory `/home/lordcrc/FreeImage'
    make: *** [default] Error 2
    
    g++ -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy -I. -ISource -ISource/Metadata -ISource/FreeImageToolkit -ISource/LibJPEG -ISource/LibMNG -ISource/LibPNG -ISource/LibTIFF -ISource/ZLib -ISource/LibOpenJPEG -ISource/OpenEXR -ISource/OpenEXR/Half -ISource/OpenEXR/Iex -ISource/OpenEXR/IlmImf -ISource/OpenEXR/IlmThread -ISource/OpenEXR/Imath -ISource/LibRawLite -ISource/LibRawLite/dcraw -ISource/LibRawLite/internal -ISource/LibRawLite/libraw -ISource/LibRawLite/src -fPIC -c Source/OpenEXR/./IlmImf/ImfChromaticities.cpp -o Source/OpenEXR/./IlmImf/ImfChromaticities.o
    In file included from Source/OpenEXR/IlmImf/ImfChromaticities.h:47,
                     from Source/OpenEXR/./IlmImf/ImfChromaticities.cpp:43:
    Source/OpenEXR/Imath/ImathMatrix.h: In constructor ‘Imath::Matrix44<T>::Matrix44() [with T = float]’:
    Source/OpenEXR/./IlmImf/ImfChromaticities.cpp:110:   instantiated from here
    Source/OpenEXR/Imath/ImathMatrix.h:1815: error: ‘memset’ was not declared in this scope
    make[1]: *** [Source/OpenEXR/./IlmImf/ImfChromaticities.o] Error 1
    make[1]: Leaving directory `/home/lordcrc/FreeImage'
    make: *** [default] Error 2
    
     
  • I can confirm the need to "including <climits> in Background.cpp" for windows
    mingw (some late release was it...).
    Have not tested the whole 3.14, just dw selected files form CVS, but most
    certainly the other include will also pop out.

     
  • Contacted OpenEXR, about the issue, they said:

    "We added the fixes so you should be ok to build from the head of the cvs
    tree. We hope to roll out 1.7.1 in the coming weeks with these, and other,
    fixes in there."

    Otherwise 3.14.1 compiles without problems.
    (Windows mingw gcc 4.4, not using Makefile.mingw, VS import instead)

     
  • Lord Crc
    Lord Crc
    2010-08-21

    Thanks for the update!