Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

64-bit Linux: Many link errors

frenet
Beginner
318 Views

I am trying to statically link to the ipp and uic libraries. I am using IPP 6.1.6.063 and have downloaded the 6.1 sample code. I am using g++. Any help with this problem would be greatly appreciated.

To help debug this I have listed all the ipp lib files in my link list as suggested in this article:

http://software.intel.com/en-us/articles/simplified-link-instructions-for-the-ipp-library

As well as the shared iomp5 lib file as recommended here: http://software.intel.com/en-us/articles/openmp-support-change/

IPP_LIB = -L/opt/intel/ipp.6.1.6.063/em64t/lib \\
-lippacemergedem64t -lippccemergedem64t -lippchemergedem64t -lippcvemergedem64t -lippdcemergedem64t \\
-lippdiemergedem64t -lippgenemergedem64t -lippiemergedem64t -lippjemergedem64t -lippmemergedem64t \\
-lippremergedem64t -lippscemergedem64t -lippsemergedem64t -lippsremergedem64t -lippvcemergedem64t \\
-lippvmemergedem64t -lippacmergedem64t_t -lippccmergedem64t_t -lippchmergedem64t_t -lippcvmergedem64t_t \\
-lippdcmergedem64t_t -lippdimergedem64t_t -lippgenmergedem64t_t -lippimergedem64t_t -lippjmergedem64t_t \\
-lippmmergedem64t_t -lipprmergedem64t_t -lippscmergedem64t_t -lippsmergedem64t_t -lippsrmergedem64t_t \\
-lippvcmergedem64t_t -lippvmmergedem64t_t -lippcoreem64t_t \\
/opt/intel/ipp/6.1.6.063/em64t/sharedlib/libiomp5.so

I am also linking to the following uic libraries:

UIC_LIB = "${SRCDIR}/_bin/linuxem64t_gcc4/lib/uic_core_l.a" \\
"${SRCDIR}/_bin/linuxem64t_gcc4/lib/uic_io_l.a" \\
"${SRCDIR}/_bin/linuxem64t_gcc4/lib/uic_jpeg_common_l.a" \\
"${SRCDIR}/_bin/linuxem64t_gcc4/lib/uic_jpeg_dec_l.a" \\
"${SRCDIR}/_bin/linuxem64t_gcc4/lib/uic_jpeg_enc_l.a"

The following is just the first couple of link errors I receive:

Linking...
/home/frenet/Downloads/ipp-samples/image-codecs/uic/_bin/linuxem64t_gcc4/lib/uic_jpeg_dec_l.a(uic_jpeg_dec.o): In function `UIC::JPEGDecoder::SetNOfThreads(unsigned int)':
uic_jpeg_dec.cpp:(.text+0x867): undefined reference to `set_num_threads(int)'
/home/frenet/Downloads/ipp-samples/image-codecs/uic/_bin/linuxem64t_gcc4/lib/uic_jpeg_dec_l.a(uic_jpeg_dec.o): In function `UIC::JPEGDecoder::NOfThreads()':
uic_jpeg_dec.cpp:(.text+0x851): undefined reference to `get_num_threads()'
/home/frenet/Downloads/ipp-samples/image-codecs/uic/_bin/linuxem64t_gcc4/lib/uic_jpeg_dec_l.a(jpegdec.o): In function `CJPEGDecoder::ReconstructMCURowLS(short*, int, int)':
jpegdec.cpp:(.text+0xa7f): undefined reference to `CJPEGColorComponent::GetCCBufferPtr(int)'
jpegdec.cpp:(.text+0xaf4): undefined reference to `ippiReconstructPredFirstRow_JPEG_16s_C1'
jpegdec.cpp:(.text+0xb13): undefined reference to `ippsLShiftC_16s'
jpegdec.cpp:(.text+0xb43): undefined reference to `ippiAndC_16u_C1IR'
jpegdec.cpp:(.text+0xb62): undefined reference to `ippiConvert_16u8u_C1R'
jpegdec.cpp:(.text+0xbbf): undefined reference to `CJPEGColorComponent::GetCCBufferPtr(int)'
jpegdec.cpp:(.text+0xc07): undefined reference to `ippsCopy_16s'
jpegdec.cpp:(.text+0xc44): undefined reference to `ippiReconstructPredRow_JPEG_16s_C1'
/home/frenet/Downloads/ipp-samples/image-codecs/uic/_bin/linuxem64t_gcc4/lib/uic_jpeg_dec_l.a(jpegdec.o): In function `CJPEGDecoder::ReconstructMCURowEX(short*, int)':
jpegdec.cpp:(.text+0xd64): undefined reference to `CJPEGColorComponent::GetSSBufferPtr(int)'
jpegdec.cpp:(.text+0xdf7): undefined reference to `ippiDCTQuantInv8x8LS_JPEG_16s16u_C1R'
jpegdec.cpp:(.text+0xe91): undefined reference to `CJPEGColorComponent::GetCCBufferPtr(int)'

0 Kudos
2 Replies
Vladimir_Dudnik
Employee
318 Views
Please note that link order is important under Linux. You may check UIC applications Makefile to see what order we use to link under Linux.

Also would like to encourage you to try the latest version of IPP and UIC. We just recently released IPP 7.0.3 which include some improvements and bug fixes.

Regards,
Vladimir
0 Kudos
frenet
Beginner
318 Views
Thank you Vladimir. For the record, moving the uic_jpeg_common_l.a library to the end of the UIC library list resolved this for me.
0 Kudos
Reply