Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build fails with Kakadu 7.5 #35

Closed
ahankinson opened this issue Feb 14, 2015 · 4 comments · Fixed by #38
Closed

Build fails with Kakadu 7.5 #35

ahankinson opened this issue Feb 14, 2015 · 4 comments · Fixed by #38

Comments

@ahankinson
Copy link
Contributor

System: Ubuntu Linux 14.04, Kakadu 7.5

The build fails at the linking stage:

link: g++ -std=gnu++0x -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 IIIF.o Watermark.o Main.o KakaduImage.o -fopenmp /home/ahankins/src/kdu/apps/make/jpx.o /home/ahankins/src/kdu/apps/make/jp2.o /home/ahankins/src/kdu/apps/make/kdu_stripe_decompressor.o /home/ahankins/src/kdu/apps/make/libkdu_v75R.so  -lmemcached -lz -lpthread ../fcgi/libfcgi/libfcgi.a -ljpeg /usr/lib/x86_64-linux-gnu/libtiff.so -lm -fopenmp
/home/ahankins/src/kdu/apps/make/kdu_stripe_decompressor.o: In function `kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int)':
kdu_stripe_decompressor.cpp:(.text+0x50a): undefined reference to `kd_supp_simd::ssse3_int16_to_uint8_rs_ilv3(unsigned char*, short**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x524): undefined reference to `kd_supp_simd::avx2_int16_to_uint8_rs_ilv3(unsigned char*, short**, int, int, int, bool, bool, int)'
.... (more of the same) ...
kdu_stripe_decompressor.cpp:(.text+0x9c4): undefined reference to `kd_supp_simd::ssse3_floats_to_int16_ilv1(short*, float**, int, int, int, bool, bool, int)'
collect2: error: ld returned 1 exit status
make[1]: *** [iipsrv.fcgi] Error 1
make[1]: Leaving directory `/home/ahankins/src/iipsrv/src'
make: *** [all-recursive] Error 1
@ahankinson
Copy link
Contributor Author

Tested on Mac OSX as well, with the same error.

Undefined symbols for architecture x86_64:
  "kd_supp_simd::avx2_int16_to_int16_ilv1(short*, short**, int, int, int, bool, bool, int)", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
  "kd_supp_simd::avx2_floats_to_int16_ilv1(short*, float**, int, int, int, bool, bool, int)", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
  "kd_supp_simd::avx2_floats_to_uint8_ilv1(unsigned char*, float**, int, int, int, bool, bool, int)", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
... (more of the same) ...
 "kd_supp_simd::ssse3_int32_to_int16_rs_ilv1(short*, int**, int, int, int, bool, bool, int)", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
  "kd_supp_simd::avx2_stripe_transfer_static_init()", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
  "kd_supp_simd::ssse3_stripe_transfer_static_init()", referenced from:
      kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int) in kdu_stripe_decompressor.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [iipsrv.fcgi] Error 1
make: *** [all-recursive] Error 1

@ruven
Copy link
Owner

ruven commented Feb 15, 2015

Try disabling SSE3 in Kakadu by adding the flag -DKDU_NO_SSSE3. See this discussion for more details: https://sourceforge.net/p/iipimage/discussion/299493/thread/bb8ba9fd/

If anyone has managed to figure out a way to retain SSE3 support, please let me know.

@ahankinson
Copy link
Contributor Author

Great -- I think I got it to work on the Mac now. I had to remove support for both SSSE3 and AVX2. (I did this by editing the Makefiles for the coresys and apps in Kakadu.)

@ahankinson
Copy link
Contributor Author

It works on Linux with the same modifications. Thanks for the help!

ahankinson added a commit to ahankinson/iipsrv that referenced this issue Apr 28, 2015
Previously, compiling IIP with Kakadu 7.5+ would result in a failed build due to symbols being referenced but not found.

The problem was that since Kakadu 7.5 the necessary symbols have been separated out into their own files which were not included in the IIP build script.

This commit adds these files to the build script.

See: https://groups.yahoo.com/neo/groups/kakadu_jpeg2000/conversations/messages/7071

Fixes ruven#35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants