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

IPP 7.0 Static linking with dispatching problem

I am trying to build a C++ code with ipp 7.0.
This code compiled easily with version, but after I changed to version 7.0 the program won't link.

I am only using the ipps and ippi libraries, and by reading through the manuals it is my understanding that I only need to change the names of the lib files, and change the include and lib paths.

In my old software I put in my Makefile
-L ippiemerged ippimerged ippsemerged ippsmerged ippcore iomp5

And in my new ipp version 7.0 Makefile I put in
-L ipps_l ippi_l ippcore_l

When I compile my code with version 7.0 I get the following error:

/opt/intel/composerxe-2011/ipp/lib/ia32/libippi_l.a(piresset_split_v8_ownDecimate8px4S.o): In function `v8_ownDecimate8px4S':
piresset_split_v8_ownDecimate8px4S.i:(.text+0xf0): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x11b): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x165): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x1c8): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x481): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x6b5): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8px4S.i:(.text+0xa4f): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8px4S.i:(.text+0xf85): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x1150): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x1636): undefined reference to `v8_ippsMalloc_8u'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x1697): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8px4S.i:(.text+0x17a8): undefined reference to `v8_ippsFree'
/opt/intel/composerxe-2011/ipp/lib/ia32/libippi_l.a(piresset_split_v8_ownDecimate8plS.o): In function `v8_ownDecimate8plS':
piresset_split_v8_ownDecimate8plS.i:(.text+0xed): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8plS.i:(.text+0x11c): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8plS.i:(.text+0x15a): undefined reference to `v8_ippsMalloc_32f'
piresset_split_v8_ownDecimate8plS.i:(.text+0x1c6): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8plS.i:(.text+0x8a5): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8plS.i:(.text+0xc09): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8plS.i:(.text+0x1857): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8plS.i:(.text+0x1ee6): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8plS.i:(.text+0x2831): undefined reference to `v8_ippsFree'
piresset_split_v8_ownDecimate8plS.i:(.text+0x2def): undefined reference to `v8_ippsMalloc_8u'
piresset_split_v8_ownDecimate8plS.i:(.text+0x2e40): undefined reference to `v8_ippsZero_8u'
piresset_split_v8_ownDecimate8plS.i:(.text+0x356d): undefined reference to `v8_ippsFree'

This is just a part of the linker error that I get.

I know that for example that v8_ippsCopy_8u is specified for Intel CoreTM 2 Duo processors.

From what I have read this error has to do with dispatching, I have read that this has to do with the CPU and I see that for IA-32 processors there is an abbreviation px, that is optimization for all processors.

I was wondering if you can see what I am missing,
I am sure I need to put some extra link parameters in my Makefile, but havent been able to find further informations, so I look to this forum for answers?

0 Kudos
1 Reply

I think on Linux, linker option -L is to specify the path where to look for libraries and -l is to specify library file names. Also you specified libraries in different order for IPP 6.0 and IPP 7.0. On Linux order of libraries in linker options does matter.

0 Kudos