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

Linking Problem with - ippJumpIndexForMergedLibs

reportbase
Beginner
875 Views
I'm trying to use "ippsFind_Z_8u". I'm unable to link.

Here is the libraries that I link too:
-lippcore -lippcore_t -lippgenmerged -lippgenmerged_t -lippgenemerged -lippchemerged -lippchmerged -lippchmerged_t -lippiemerged -lippimerged -lippsemerged -lippsmerged -lippsmerged -lippcvemerged

Here is the error output from GCC:

/opt/intel/ipp/6.1.2.051/ia32/lib/../lib/libippchemerged.a(ippch00009as.o): In function `ippsFind_Z_8u':
(.text+0x1): undefined reference to `ippJumpIndexForMergedLibs'
collect2: ld returned 1 exit status
make: *** [../../../bin/tst] Error 1
0 Kudos
4 Replies
Chao_Y_Intel
Moderator
875 Views

Hi,

Try the following command line:
-lippchemerged -lippchmerged -lippsemerged -lippsmerged -lippcore

The order of libaries is importantand in the Linux. ippcore libarary need be after all other IPP libraries.

Thanks,
Chao
0 Kudos
Varun_R_2
Beginner
875 Views

Hi Chao,

I'm facing following issue when i'm trying to link with static libraries [intel64]

In my makefile, i included all the libs and their path.

LDLIBS += -lirc -lsvml -limf -liomp5
LDLIBS += -lippcore -lbfp754 -ldecimal -limf -liomp5 -liompstubs5 -lippac -lipgo -lippcc -lippch
LDLIBS += -lippm -lippr -lipps -lippsc -lippsc_l -lipps_l 
LDLIBS += -lippcore_l -lippcp -lippcv -lippdc -lippdi -lippgen -lippi -lippj -lcore
LDLIBS += -lippvc -lippvm -lirc -lirc_s -lirng -lm -lmatmul -lpdbx -lpdbxinst -lspeech -lsvml

i saw following posts:

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

Please let me know, if i'm missing some thing. I didnt find any merged libs in IPP tool chain install path. All these we were using dynamic libs and we were able to build and every thing was fine. Now we are trying to build with static libs.

Errors:

/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(jmp_ippsAESDecryptCTR_as.o): In function `ippsAESDecryptCTR':

(.text+0x3): undefined reference to `ippJumpIndexForMergedLibs'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(jmp_ippsAESEncryptCTR_as.o): In function `ippsAESEncryptCTR':
(.text+0x3): undefined reference to `ippJumpIndexForMergedLibs'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(jmp_ippsAESGetSize_as.o): In function `ippsAESGetSize':
(.text+0x3): undefined reference to `ippJumpIndexForMergedLibs'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(jmp_ippsAESInit_as.o): In function `ippsAESInit':
(.text+0x3): undefined reference to `ippJumpIndexForMergedLibs'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(jmp_ippsHMACSHA1MessageDigest_as.o): In function `ippsHMACSHA1MessageDigest':
(.text+0x3): undefined reference to `ippJumpIndexForMergedLibs'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(pcprij128initca_e9---ippsSafeRijndael128Init.o): In function `e9_ippsSafeRijndael128Init':
pcprij128initca_e9---ippsSafeRijndael128Init.i:(.text+0xe4): undefined reference to `ownGetFeature'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(pcprij128initca_y8---ippsSafeRijndael128Init.o): In function `y8_ippsSafeRijndael128Init':
pcprij128initca_y8---ippsSafeRijndael128Init.i:(.text+0xe4): undefined reference to `ownGetFeature'
/software/src/hornet/softsbc/dsp/ipplib/libippcp.a(pcprij128initca_l9---ippsSafeRijndael128Init.o): In function `l9_ippsSafeRijndael128Init':
pcprij128initca_l9---ippsSafeRijndael128Init.i:(.text+0xde): undefined reference to `ownGetFeature'
collect2: ld returned 1 exit status
make[1]: *** [SWe_NP] Error 1

0 Kudos
Chao_Y_Intel
Moderator
875 Views

Hello, 

Which version of Intel IPP are you using now? there is a bit change in the libraries name in the new IPP release?   For example, for single processing library,   it is   ipp/lib/intel64/libipps.a for 64 bit library.  

For you application, can you try if you adding the following library into the common line, and see if it works: 
ipp/lib/intel64/libippcp.a   ipp/lib/intel64/libipps.a   ipp/lib/intel64/libippcore.a

Note, the order of libraries is important for the Linux.   libippcore.a need to be the last one. 

Thanks,
Chao 
  

 

 

 

 

0 Kudos
Pavel_B_Intel1
Employee
875 Views

Hi Varun,

for Linux the libraries order in linking line is very important, you should point IPP libraries in order to their dependence tree, I recommend you to change you link options to:

LDLIBS += -lbfp754 -ldecimal -lipgo 
LDLIBS += -lippvc_l -lippac_l -lippvm_l  -lippcc_l -lippch_l -lippm_l -lippr_l -lippsc_l -lippdc_l -lippdi_l -lippgen_l -lippj_l -lippi_l -lipps_l -lippcore_l
LDLIBS += -lirc_s -lirng -lm -lmatmul -lpdbx -lpdbxinst -lspeech -lsvml
LDLIBS += -lirc -lsvml -limf -liomp5

Note: you combined static "ipp*_l" and dynamic (without any sufixes _l or _t) IPP libraries in your link string: it is wrong, you should use only one kind of libraries. Please try to substitute your line on mine.

Pavel

0 Kudos
Reply