Compiling with kakadu

Anonymous
2013-10-16
2015-05-14

  • Anonymous
    2013-10-16

    Hi All,

    I've got 2 questions about compiling iipsrv with kakadu.

    When compiling with kakadu version > 7.1 it fails with:

    libtool: link: g++ -g -O2 -o iipsrv.fcgi IIPImage.o TPTImage.o JPEGCompressor.o TileManager.o IIPResponse.o View.o Transforms.o Task.o OBJ.o FIF.o JTL.o TIL.o ICC.o CVT.o Zoomify.o DeepZoom.o SPECTRA.o PFL.o Watermark.o Main.o KakaduImage.o /usr/src/kakadu/v7_3-01305C//apps/make/jpx.o /usr/src/kakadu/v7_3-01305C//apps/make/jp2.o /usr/src/kakadu/v7_3-01305C//apps/make/kdu_stripe_decompressor.o /usr/src/kakadu/v7_3-01305C//apps/make/libkdu_v73R.so /usr/lib/libmemcached.so -lz -lpthread /usr/lib/libfcgi.so /usr/lib/libjpeg.so /usr/lib/libtiff.so -lm -pthread
    /usr/src/kakadu/v7_3-01305C//apps/make/kdu_stripe_decompressor.o: In function kdsd_tile::init(kdu_coords, kdu_codestream, kdsd_component_state*, bool, bool, kdu_thread_env*, kdu_thread_queue*, int)': kdu_stripe_decompressor.cpp:(.text+0x1c9b): undefined reference tossse3_int16_to_uint8_rs_ilv4(unsigned char, short, int, int, int, bool, bool)'
    kdu_stripe_decompressor.cpp:(.text+0x1cca): undefined reference to ssse3_int16_to_uint8_rs_ilv1(unsigned char*, short**, int, int, int, bool, bool)' kdu_stripe_decompressor.cpp:(.text+0x1d33): undefined reference tossse3_int16_to_uint8_rs_ilv3(unsigned char*, short
    , int, int, int, bool, bool)'
    kdu_stripe_decompressor.cpp:(.text+0x1d5a): undefined reference to ssse3_floats_to_floats_ilv1(float*, float**, int, int, int, bool, bool)' kdu_stripe_decompressor.cpp:(.text+0x1d73): undefined reference tossse3_floats_to_uint8_ilv1(unsigned char
    , float, int, int, int, bool, bool)'
    kdu_stripe_decompressor.cpp:(.text+0x1d8a): undefined reference to ssse3_floats_to_uint8_ilv3(unsigned char*, float**, int, int, int, bool, bool)' kdu_stripe_decompressor.cpp:(.text+0x1da1): undefined reference tossse3_floats_to_uint8_ilv4(unsigned char*, float
    , int, int, int, bool, bool)'
    kdu_stripe_decompressor.cpp:(.text+0x1f47): undefined reference to ssse3_int16_to_int16_ilv1(short*, short**, int, int, int, bool, bool)' kdu_stripe_decompressor.cpp:(.text+0x1f7a): undefined reference tossse3_floats_to_int16_ilv1(short, float, int, int, int, bool, bool)'
    kdu_stripe_decompressor.cpp:(.text+0x2103): undefined reference to ssse3_int32_to_int16_rs_ilv1(short*, int**, int, int, int, bool, bool)' collect2: ld returned 1 exit status make[1]: *** [iipsrv.fcgi] Error 1 make[1]: Leaving directory/usr/src/iipsrv/iipsrv/src'
    make:
    [all-recursive] Error 1

    Anyone has any ideas about this?

    The second thing is, when I compile with kakadu 7.1 it does work. But it then links the kakadu libraries like:
    root@myhost:/usr/src/iipsrv/iipsrv# ldd src/iipsrv.fcgi
    linux-vdso.so.1 => (0x00006a9aa8adf000)
    /usr/src/kakadu/v7_1-01305C//apps/makev7_1-01305C//libkdu_v71R.so (0x00006a9aa8800000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x00006a9aa85e1000)
    libpng12.so.0 => /lib/libpng12.so.0 (0x00006a9aa83ba000)
    libmemcached.so.5 => /usr/lib/libmemcached.so.5 (0x00006a9aa81a6000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00006a9aa7f8f000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00006a9aa7d72000)
    libfcgi.so.0 => /usr/lib/libfcgi.so.0 (0x00006a9aa7b68000)
    libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00006a9aa7945000)
    libtiff.so.4 => /usr/lib/libtiff.so.4 (0x00006a9aa76e1000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00006a9aa73cd000)
    libm.so.6 => /lib/libm.so.6 (0x00006a9aa714b000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00006a9aa6f34000)
    libc.so.6 => /lib/libc.so.6 (0x00006a9aa6bd2000)
    /lib64/ld-linux-x86-64.so.2 (0x00006a9aa8ae1000)

    It then always searches for the libkdu_v71R.so in the /usr/src/kakadu/v7_1-01305C//apps/make location instead of the standard system librarie paths. How can I make sure that it searches the system library paths?

    Greets,

    Sander

     
  • Ruven
    Ruven
    2013-10-16

    I've only got 7.1 to test with, so can't really help you for the first question. Though, it looks like a missing object file or library.

    For your second problem, you can get round this by simply performing the final link stage manually. So, rerun make and just copy and paste the final g++ command from the src/ directory and change the kakadu path to -lkdu and add use -L to specify a search path. Or instead use the static version of the library, which you will find in the Kakadu directory under lib/Linux-x86-64-gcc/libkdu.a (depending on your system).

     

    • Anonymous
      2013-11-07

      Hi Ruven,

      My name is Daniel Gronowski, Sales Manager here at kakadu Software. I would be happy to discuss use of the latest version, drop me an email at sales@kakadusoftware.com

      I know you contacted me last year to discuss this however i never received any response to my email.

      Regards,
      Daniel

       
  • Illtud Daniel
    Illtud Daniel
    2013-11-06

    When compiling with kakadu version > 7.1 it fails with:
    [...]

    Yeah, me too. My coding foo isn't up to working out why.

     
  • Hi

    I had same problem. I fixed it with compiling Kakadu without SSSE3 support (-DKDU_NO_SSSE3)
    For more information about KDU_NO_SSSE3 see Kakadu documentation: Compiling_Instructions.txt

     
    • Georg
      Georg
      2014-04-08

      I looked into Compiling_Instructions.txt but I couldn't find out how to disable SSSE3, if you comment out:
      C_OPT += -mssse3
      I get '#error "SSSE3 instruction set not enabled"' when I try to compile Kakadu

      update: I should use the flag -DKDU_NO_SSSE3

       
      Last edit: Georg 2014-04-08

  • Anonymous
    2015-02-12

    Hi all !

    Compiling without SSSE3 is working. Does someone try to measure the impact on iipserver general performance ?

    Ruven, do you plan to fix it for the 1.0 release ?

     
    • Ruven
      Ruven
      2015-02-12

      This is an issue with Kakadu rather than with iipsrv

       


Anonymous


Cancel   Add attachments