Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

IPP 7.0 Static linking with dispatching problem

Birgir_Bjorn_Saevars
477 Views
I am trying to build a C++ code with ipp 7.0.
This code compiled easily with version 6.0.1.071, 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
Vladimir_Dudnik
Employee
477 Views
Hello,

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.

Regards,
Vladimir
0 Kudos
Reply