fei-company / EerReaderLib

ThermoFisher Scientific Falcon 4 EER format description
MIT License
7 stars 5 forks source link

Linux compatibility #6

Open MartinSalinas98 opened 1 year ago

MartinSalinas98 commented 1 year ago

I have been trying to install this library in Ubuntu 22.04 so I can integrate together within a bigger cryo em image processing framework. However, I encountered some problems, one of them fixed in PR #5 .

As explained by @maxime-jacquet-tfs, this library currently only supports Windows, so I'm opening this issue in the hopes that some kind of Linux compatibility can be worked on, because it's the main OS used for image processing by far, and having an officially supported library for handling EER files in Linux would be great.

Thanks in advance :)

aseedb commented 10 months ago

I agree, this would be very useful.

aseedb commented 10 months ago

I have modified the code to compile under mac and linux and made a pull request. @MartinSalinas98 in case you want to try it before the pull request is accepted check my fork .

MartinSalinas98 commented 10 months ago

Hey @aseedb, thanks for working on it! Can I ask you a question about it? I was going to post it as an issue in your fork, but i doesn't have that section visible.

The thing is, I was trying to install it, and, checking your readme I found:

cmake ../ -DLIBTIFF_INCLUDE_DIR="[Path to Libtiff local include directory]" -DLIBTIFF_LIB_DIR="[Path to Libtiff local lib directory]" -G=[Generator] -A x64

Why is a Generator needed for this? Sorry if the question is too basic, but I haven't gotten really deep into this library since I saw it wasn't compatible with Linux.

aseedb commented 10 months ago

Hi @MartinSalinas98. In my fork I just added the first two lines. The rest is the same as in the original repo. I don't use a generator actually. I build using VSCode and my settings.json is:

{
    "cmake.configureSettings": {
        "LIBTIFF_INCLUDE_DIR": "/opt/homebrew/include",
        "LIBTIFF_LIB_DIR": "/opt/homebrew/lib",
        "CMAKE_CXX_FLAGS": "-I/opt/homebrew/include -L/opt/homebrew/lib"
    },
    "cmake.parallelJobs": 1,
    "cmake.ctest.parallelJobs": 1,
    "files.associations": {
        "stdexcept": "cpp"
    }
}

I found that building using parallel processes gave rise to errors, hence I forced it to use only 1 core. Hope this helps.

MartinSalinas98 commented 10 months ago

Hi @aseedb, sorry I could not answer sooner, I was busy with work and did not have a change to try it out.

I tried avoiding a standalone installation of libtiff, to test if that extra dependency could be redirected to Ubuntu's included libraries. To be precise, I used the .h file in /usr/include/x86_64-linux-gnu/tiff.h, and the .so file in /usr/lib/x86_64-linux-gnu/libtiff.so, so I tried installing with the following command:

cmake ../ -DLIBTIFF_INCLUDE_DIR="/usr/include/x86_64-linux-gnu/" -DLIBTIFF_LIB_DIR="/usr/lib/x86_64-linux-gnu/"

This worked fine producing the following output:

-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/msalinas/Documents/standalone-installations/EerReaderLib/build

However, then I tried compiling with make -j 12 and got this error:

[ 10%] Building CXX object CMakeFiles/EERReaderLib.dir/DefectMaskingEER.cpp.o
[ 20%] Building CXX object CMakeFiles/EERReaderLib.dir/EerFile.cpp.o
[ 30%] Building CXX object Test/CMakeFiles/TestEerReader.dir/TestEerReader.cpp.o
[ 40%] Building CXX object CMakeFiles/EERReaderLib.dir/Bitmap.cpp.o
[ 50%] Building CXX object CMakeFiles/EERReaderLib.dir/EerFrame.cpp.o
[ 60%] Building CXX object CMakeFiles/EERReaderLib.dir/ElectronCountedFramesDecompressor.cpp.o
[ 70%] Building CXX object CMakeFiles/EERReaderLib.dir/GainDefectCorrect.cpp.o
[ 80%] Building CXX object CMakeFiles/EERReaderLib.dir/stdafx.cpp.o
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp: In function ‘void Fei::Acquisition::EerReader::{anonymous}::TagExtender(TIFF*)’:
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:45:121: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   45 |             { TIFFTAG_EER_ACQUISITION_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Acquisition metadata" },
      |                                                                                                                         ^~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:46:121: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   46 |             { TIFFTAG_EER_FINAL_IMAGE_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Final image metadata" },
      |                                                                                                                         ^~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:47:132: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   47 |             { TIFFTAG_EER_FINAL_IMAGE_PROCESSING_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Final image processing metadata" },
      |                                                                                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:48:115: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   48 |             { TIFFTAG_EER_FRAME_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Frame metadata" },
      |                                                                                                                   ^~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:49:126: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   49 |             { TIFFTAG_EER_FRAME_PROCESSING_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Frame processing metadata" },
      |                                                                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:50:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   50 |             { EER_DECODER_SKIPBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "SKIPBITS" },
      |                                                                                   ^~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:51:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   51 |             { EER_DECODER_HORZBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "HORZBITS" },
      |                                                                                   ^~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:52:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   52 |             { EER_DECODER_VERTBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "VERTBITS" }
      |                                                                                   ^~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/Test/TestEerReader.cpp: In function ‘int main(int, char**)’:
/home/msalinas/Documents/standalone-installations/EerReaderLib/Test/TestEerReader.cpp:111:28: error: ‘strcmp’ was not declared in this scope
  111 |     else if (argc == 2 && (strcmp(argv[1], "--help") == 0 ||
      |                            ^~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/Test/TestEerReader.cpp:9:1: note: ‘strcmp’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
    8 | #include "../ElectronCountedFramesDecompressor.h"
  +++ |+#include <cstring>
    9 | 
make[2]: *** [Test/CMakeFiles/TestEerReader.dir/build.make:76: Test/CMakeFiles/TestEerReader.dir/TestEerReader.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:126: Test/CMakeFiles/TestEerReader.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 90%] Linking CXX static library lib/libEERReaderLib.a
[ 90%] Built target EERReaderLib
make: *** [Makefile:91: all] Error 2

Do you know what is causing this issue? Could it be related to me using the already included libtiff instead of installing a standalone version?

I mean, the error is that strcmp is not defined, but I'm not sure if that has anything to do with OS. However, I don't know why that should work in Windows.

Thanks!

MartinSalinas98 commented 10 months ago

Okay, adding #include <string.h> to file TestEerReader.cpp solved that issue. If you could add that to your fork, it would be great.

To narrow it down, it's file TestEerReader.cpp, it's just adding the include among the first lines.

However, I found a new issue that now seems to be related with the library:

[ 10%] Building CXX object CMakeFiles/EERReaderLib.dir/Bitmap.cpp.o
[ 20%] Building CXX object CMakeFiles/EERReaderLib.dir/DefectMaskingEER.cpp.o
[ 30%] Building CXX object CMakeFiles/EERReaderLib.dir/EerFile.cpp.o
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp: In function ‘void Fei::Acquisition::EerReader::{anonymous}::TagExtender(TIFF*)’:
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:45:121: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   45 |             { TIFFTAG_EER_ACQUISITION_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Acquisition metadata" },
      |                                                                                                                         ^~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:46:121: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   46 |             { TIFFTAG_EER_FINAL_IMAGE_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Final image metadata" },
      |                                                                                                                         ^~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:47:132: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   47 |             { TIFFTAG_EER_FINAL_IMAGE_PROCESSING_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Final image processing metadata" },
      |                                                                                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:48:115: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   48 |             { TIFFTAG_EER_FRAME_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Frame metadata" },
      |                                                                                                                   ^~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:49:126: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   49 |             { TIFFTAG_EER_FRAME_PROCESSING_METADATA, TIFF_VARIABLE, TIFF_VARIABLE, TIFF_UNDEFINED, FIELD_CUSTOM, true, true, "Frame processing metadata" },
      |                                                                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:50:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   50 |             { EER_DECODER_SKIPBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "SKIPBITS" },
      |                                                                                   ^~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:51:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   51 |             { EER_DECODER_HORZBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "HORZBITS" },
      |                                                                                   ^~~~~~~~~~
/home/msalinas/Documents/standalone-installations/EerReaderLib/EerFile.cpp:52:83: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
   52 |             { EER_DECODER_VERTBITS, 1, 1, TIFF_SHORT, FIELD_CUSTOM, false, false, "VERTBITS" }
      |                                                                                   ^~~~~~~~~~
[ 40%] Building CXX object CMakeFiles/EERReaderLib.dir/EerFrame.cpp.o
[ 50%] Building CXX object CMakeFiles/EERReaderLib.dir/ElectronCountedFramesDecompressor.cpp.o
[ 60%] Building CXX object CMakeFiles/EERReaderLib.dir/GainDefectCorrect.cpp.o
[ 70%] Building CXX object CMakeFiles/EERReaderLib.dir/stdafx.cpp.o
[ 80%] Linking CXX static library lib/libEERReaderLib.a
[ 80%] Built target EERReaderLib
[ 90%] Building CXX object Test/CMakeFiles/TestEerReader.dir/TestEerReader.cpp.o
[100%] Linking CXX executable ../bin/TestEerReader
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jbig.o): in function `JBIGEncode':
(.text+0x49): undefined reference to `jbg_enc_init'
/usr/bin/ld: (.text+0x51): undefined reference to `jbg_enc_out'
/usr/bin/ld: (.text+0x59): undefined reference to `jbg_enc_free'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jbig.o): in function `JBIGDecode':
(.text+0xd8): undefined reference to `jbg_dec_init'
/usr/bin/ld: (.text+0xeb): undefined reference to `jbg_newlen'
/usr/bin/ld: (.text+0x103): undefined reference to `jbg_dec_in'
/usr/bin/ld: (.text+0x116): undefined reference to `jbg_dec_getsize'
/usr/bin/ld: (.text+0x134): undefined reference to `jbg_dec_getimage'
/usr/bin/ld: (.text+0x14a): undefined reference to `jbg_dec_free'
/usr/bin/ld: (.text+0x1c3): undefined reference to `jbg_strerror'
/usr/bin/ld: (.text+0x1f0): undefined reference to `jbg_dec_free'
/usr/bin/ld: (.text+0x246): undefined reference to `jbg_dec_free'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_create_decompress':
(.text+0x225): undefined reference to `jpeg_std_error'
/usr/bin/ld: (.text+0x280): undefined reference to `jpeg_CreateDecompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_abort':
(.text+0x376): undefined reference to `jpeg_abort'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_error_exit':
(.text+0x3ea): undefined reference to `jpeg_abort'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_read_header':
(.text+0x429): undefined reference to `jpeg_read_header'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_has_multiple_scans':
(.text+0x476): undefined reference to `jpeg_has_multiple_scans'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_write_raw_data':
(.text+0x725): undefined reference to `jpeg_write_raw_data'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_finish_compress':
(.text+0xa66): undefined reference to `jpeg_finish_compress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_set_colorspace':
(.text+0xbc9): undefined reference to `jpeg_set_colorspace'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_create_compress':
(.text+0xbf5): undefined reference to `jpeg_std_error'
/usr/bin/ld: (.text+0xc50): undefined reference to `jpeg_CreateCompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_set_defaults':
(.text+0xc96): undefined reference to `jpeg_set_defaults'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_write_tables':
(.text+0xd76): undefined reference to `jpeg_write_tables'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_finish_decompress':
(.text+0xe13): undefined reference to `jpeg_finish_decompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_read_raw_data':
(.text+0xe65): undefined reference to `jpeg_read_raw_data'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_start_decompress':
(.text+0x1216): undefined reference to `jpeg_start_decompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_progress_monitor':
(.text+0x1640): undefined reference to `jpeg_abort'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_read_scanlines.constprop.0':
(.text+0x16e0): undefined reference to `jpeg_read_scanlines'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_write_scanlines.constprop.0':
(.text+0x18a0): undefined reference to `jpeg_write_scanlines'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_start_compress.constprop.0':
(.text+0x1b68): undefined reference to `jpeg_start_compress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_suppress_tables.constprop.0':
(.text+0x1bbb): undefined reference to `jpeg_suppress_tables'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_set_quality.constprop.0':
(.text+0x1c0b): undefined reference to `jpeg_set_quality'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFjpeg_destroy.isra.0':
(.text+0x271e): undefined reference to `jpeg_destroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `JPEGSetupDecode':
(.text+0x2839): undefined reference to `jpeg_resync_to_restart'
/usr/bin/ld: (.text+0x294b): undefined reference to `jpeg_resync_to_restart'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_jpeg.o): in function `TIFFJPEGIsFullStripRequired':
(.text+0x3657): undefined reference to `jpeg_resync_to_restart'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMAEncode':
(.text+0x1a0): undefined reference to `lzma_code'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMAPostEncode':
(.text+0x303): undefined reference to `lzma_code'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMAPreEncode':
(.text+0x3bd): undefined reference to `lzma_stream_encoder'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMAVSetField':
(.text+0x482): undefined reference to `lzma_lzma_preset'
/usr/bin/ld: (.text+0x4c5): undefined reference to `lzma_stream_encoder'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMADecode':
(.text+0x596): undefined reference to `lzma_code'
/usr/bin/ld: (.text+0x5a8): undefined reference to `lzma_memusage'
/usr/bin/ld: (.text+0x5b5): undefined reference to `lzma_stream_decoder'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMAPreDecode':
(.text+0x723): undefined reference to `lzma_stream_decoder'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMASetupEncode':
(.text+0x7d8): undefined reference to `lzma_end'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMASetupDecode':
(.text+0x848): undefined reference to `lzma_end'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `LZMACleanup':
(.text+0x8f9): undefined reference to `lzma_end'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_lzma.o): in function `TIFFInitLZMA':
(.text+0xabc): undefined reference to `lzma_lzma_preset'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `jpeg_read_raw_data_encap':
(.text+0xb78): undefined reference to `jpeg_read_raw_data'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `jpeg_create_decompress_encap':
(.text+0xbc0): undefined reference to `jpeg_CreateDecompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `jpeg_start_decompress_encap':
(.text+0xbf6): undefined reference to `jpeg_start_decompress'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `jpeg_read_header_encap.constprop.0':
(.text+0xe1b): undefined reference to `jpeg_read_header'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `jpeg_read_scanlines_encap.constprop.0':
(.text+0xe63): undefined reference to `jpeg_read_scanlines'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `OJPEGPostDecode':
(.text+0x12d8): undefined reference to `jpeg_destroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `OJPEGCleanup':
(.text+0x1499): undefined reference to `jpeg_destroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_ojpeg.o): in function `OJPEGPreDecode':
(.text+0x3a21): undefined reference to `jpeg_std_error'
/usr/bin/ld: (.text+0x40b2): undefined reference to `jpeg_destroy'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogVSetField':
(.text+0x24a): undefined reference to `deflateParams'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogCleanup':
(.text+0x389): undefined reference to `inflateEnd'
/usr/bin/ld: (.text+0x391): undefined reference to `deflateEnd'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogPostEncode':
(.text+0x442): undefined reference to `deflate'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogEncode':
(.text+0x7a5): undefined reference to `deflate'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogDecode':
(.text+0x1e04): undefined reference to `inflate'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogPreEncode':
(.text+0x32ee): undefined reference to `deflateReset'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogPreDecode':
(.text+0x338e): undefined reference to `inflateReset'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogSetupDecode':
(.text+0x3597): undefined reference to `inflateInit_'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_pixarlog.o): in function `PixarLogSetupEncode':
(.text+0x378c): undefined reference to `deflateInit_'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPSetupDecode':
(.text+0x285): undefined reference to `WebPPictureFree'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPCleanup':
(.text+0x34f): undefined reference to `WebPIDelete'
/usr/bin/ld: (.text+0x35b): undefined reference to `WebPFreeDecBuffer'
/usr/bin/ld: (.text+0x3bd): undefined reference to `WebPPictureFree'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPPostEncode':
(.text+0x50d): undefined reference to `WebPPictureImportRGB'
/usr/bin/ld: (.text+0x527): undefined reference to `WebPEncode'
/usr/bin/ld: (.text+0x589): undefined reference to `WebPPictureImportRGBA'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPSetupEncode':
(.text+0x886): undefined reference to `WebPPictureInitInternal'
/usr/bin/ld: (.text+0x8b0): undefined reference to `WebPConfigInitInternal'
/usr/bin/ld: (.text+0x8d4): undefined reference to `WebPValidateConfig'
/usr/bin/ld: (.text+0x938): undefined reference to `WebPIDelete'
/usr/bin/ld: (.text+0x944): undefined reference to `WebPFreeDecBuffer'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPDecode':
(.text+0xac8): undefined reference to `WebPIAppend'
/usr/bin/ld: (.text+0xb24): undefined reference to `WebPIDecGetRGB'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_webp.o): in function `TWebPPreDecode':
(.text+0xcfc): undefined reference to `WebPIDelete'
/usr/bin/ld: (.text+0xd04): undefined reference to `WebPFreeDecBuffer'
/usr/bin/ld: (.text+0xd26): undefined reference to `WebPInitDecBufferInternal'
/usr/bin/ld: (.text+0xd6f): undefined reference to `WebPINewDecoder'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPCleanup':
(.text+0x10c): undefined reference to `libdeflate_free_decompressor'
/usr/bin/ld: (.text+0x11d): undefined reference to `libdeflate_free_compressor'
/usr/bin/ld: (.text+0x150): undefined reference to `inflateEnd'
/usr/bin/ld: (.text+0x168): undefined reference to `deflateEnd'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPEncode':
(.text+0x234): undefined reference to `deflate'
/usr/bin/ld: (.text+0x30e): undefined reference to `libdeflate_zlib_compress_bound'
/usr/bin/ld: (.text+0x341): undefined reference to `libdeflate_zlib_compress'
/usr/bin/ld: (.text+0x3f8): undefined reference to `libdeflate_alloc_compressor'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPPostEncode':
(.text+0x51d): undefined reference to `deflate'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPPreEncode':
(.text+0x5e1): undefined reference to `deflateReset'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPSetupEncode':
(.text+0x66b): undefined reference to `deflateInit_'
/usr/bin/ld: (.text+0x6c4): undefined reference to `inflateEnd'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPDecode':
(.text+0x7db): undefined reference to `inflate'
/usr/bin/ld: (.text+0x89a): undefined reference to `libdeflate_zlib_decompress'
/usr/bin/ld: (.text+0xa04): undefined reference to `libdeflate_alloc_decompressor'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPPreDecode':
(.text+0xac5): undefined reference to `inflateReset'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPSetupDecode':
(.text+0xb4b): undefined reference to `deflateEnd'
/usr/bin/ld: (.text+0xb69): undefined reference to `inflateInit_'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zip.o): in function `ZIPVSetField':
(.text+0xc6c): undefined reference to `libdeflate_free_compressor'
/usr/bin/ld: (.text+0xd14): undefined reference to `deflateParams'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDCleanup':
(.text+0xbf): undefined reference to `ZSTD_freeDStream'
/usr/bin/ld: (.text+0xdd): undefined reference to `ZSTD_freeCStream'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDEncode':
(.text+0x1aa): undefined reference to `ZSTD_compressStream'
/usr/bin/ld: (.text+0x1b5): undefined reference to `ZSTD_isError'
/usr/bin/ld: (.text+0x23c): undefined reference to `ZSTD_getErrorName'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDPostEncode':
(.text+0x2e8): undefined reference to `ZSTD_endStream'
/usr/bin/ld: (.text+0x2f3): undefined reference to `ZSTD_isError'
/usr/bin/ld: (.text+0x354): undefined reference to `ZSTD_getErrorName'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDPreEncode':
(.text+0x3c7): undefined reference to `ZSTD_freeCStream'
/usr/bin/ld: (.text+0x3d7): undefined reference to `ZSTD_createCStream'
/usr/bin/ld: (.text+0x3f1): undefined reference to `ZSTD_initCStream'
/usr/bin/ld: (.text+0x3fc): undefined reference to `ZSTD_isError'
/usr/bin/ld: (.text+0x464): undefined reference to `ZSTD_getErrorName'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDDecode':
(.text+0x56b): undefined reference to `ZSTD_decompressStream'
/usr/bin/ld: (.text+0x576): undefined reference to `ZSTD_isError'
/usr/bin/ld: (.text+0x585): undefined reference to `ZSTD_getErrorName'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDPreDecode':
(.text+0x6a1): undefined reference to `ZSTD_freeDStream'
/usr/bin/ld: (.text+0x6b1): undefined reference to `ZSTD_createDStream'
/usr/bin/ld: (.text+0x6c5): undefined reference to `ZSTD_initDStream'
/usr/bin/ld: (.text+0x6d0): undefined reference to `ZSTD_isError'
/usr/bin/ld: (.text+0x72c): undefined reference to `ZSTD_getErrorName'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDSetupEncode':
(.text+0x7b8): undefined reference to `ZSTD_freeDStream'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDSetupDecode':
(.text+0x838): undefined reference to `ZSTD_freeCStream'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/libtiff.a(tif_zstd.o): in function `ZSTDVSetField':
(.text+0x8cf): undefined reference to `ZSTD_maxCLevel'
/usr/bin/ld: (.text+0x8d8): undefined reference to `ZSTD_maxCLevel'
collect2: error: ld returned 1 exit status
make[2]: *** [Test/CMakeFiles/TestEerReader.dir/build.make:97: bin/TestEerReader] Error 1
make[1]: *** [CMakeFiles/Makefile2:126: Test/CMakeFiles/TestEerReader.dir/all] Error 2
make: *** [Makefile:91: all] Error 2