Find the Intel® IPP Libraries Needed by Your Application

Overview
Intel® IPP libraries needed in linking depend on the function domain and the linkage model you choose. Dynamic linkage and static linkage with dispatching are two simple and commonly used linkage models.

Function Domain
Intel® IPP libraries classfy it's function into about 16 domain.  It is easy to discern the function domain for one function by the header file name.
For example a function ippsFind_8u(), check it's discription in reference manual
Description
The functions ippsFind and ippsFindRev are declared in the ippch.h file.  then the function belong to ippch string processing domain.
Then check the below table, you will find the libraries the function needed.

The file ipp.h includes Intel IPP header files with the exception of cryptography and generated functions. If you do not use cryptography and generated functions, include ipp.h in your application for forward compatibility. If you want to use cryptography or generated functions, you must directly include ippcp.h and ippgen.h in your application.

Code of Domain

Header file

Prefix

Description

AC*

ippac.h

ipps

audio coding

CC ippcc.h ippi

color conversion

CH ippch.h ipps

string operations

CORE ippcore.h ipp

core functions

CP ippcp.h ipps

cryptography

CV ippcv.h ippi

computer vision

DC ippdc.h ipps

data compression

DI* ippdi.h ipps

data integrity

GEN* ippgen.h ippg

spiral generated

I ippi.h ippi

image processing

J* ippj.h ippi

JPEG compression

M* ippm.h ippm

small matrix operations

R* ippr.h ippr

realistic rendering and 3D data processing

S ipps.h ipps

signal processing

SC* ippsc.h ipps

speech codecs

VC* ippvc.h ippi

video codecs

VM ippvm.h ipps

vector math

E** ippe.h ipps

embedded functionality

* refers to deprecated domain ( Please avoid starting any new projects with the deprecated domains )

** available only within the Intel® System Studio suite

Linking Options

Intel® Integrated Performance Primitives (Intel® IPP) is distributed as:

  • Static library: static linking results in a standalone executable
  • Dynamic/shared library: dynamic linking defers function resolution until runtime and requires that you bundle the redistributable libraries with your application

 

Previous generations of Intel® IPP implemented threading inside some functions (listed in the ThreadedFunctionsList.txt file). This simplified getting started with threading but, due to issues with performance and interoperability with other threading models, is no longer recommended for new development. Versions of the library with internal threading enabled for a subset of functions are distributed as a separate package.

The following table provides description of libraries available for linking.

  Single-threaded

(non-threaded)

Multi-threaded

(internally threaded)

Description Suitable for application-level threading Use only when no other form of threading is active
Found in

Main package

After installation: <ipp directory>/lib/<arch>

Separate download

After installation:<ipp directory>/lib/<arch>/threaded

Static linking

Windows* OS: mt suffix in a library name (ipp<domain>mt.lib)

Linux* OS and OS X*: no suffix in a library name (libipp<domain>.a)

Windows* OS: mt suffix in a library name (ipp<domain>mt.lib)

Linux* OS and OS X*: no suffix in a library name (libipp<domain>.a)

Dynamic Linking

Default (no suffix)

Windows* OS: ipp<domain>.lib

Linux* OS: libipp<domain>.a

OS X*: libipp<domain>.dylib

Default (no suffix)

Windows* OS: ipp<domain>.lib

Linux* OS: libipp<domain>.a

OS X*: libipp<domain>.dylib

You can also refer to this quick reference table.

<Note>

Internally threaded (multi-threaded) versions of Intel® IPP libraries are deprecated but made available for legacy applications. It is strongly recommended to use the single-threaded version of the libraries for new development.

 

To switch between single- or multi-threaded Intel IPP libraries, set the path to the preferred library in system variables or in your project, for example:

  • Windows* OS:

    Single-threaded: SET LIB=<ipp directory>/lib/<arch>

    Multi-threaded: SET LIB=<ipp directory>/lib/<arch>/threaded

  • Linux* OS/OS X*

    Single-threaded: gcc <options> -L <ipp directory>/lib/<arch>

    Multi-threaded: gcc <options> -L <ipp directory>/lib/<arch>/threaded

 

 

<Note>

On Linux* OS and OS X* Intel IPP library depends on the following Intel® C++ Compiler runtime libraries: libirc.a, libsvml.a, and libimf.a. You should add a link to these libraries into your project. You can find these libraries in <ipp directory>/lib or <intel compiler directory>/lib folders.

For more complete information about compiler optimizations, see our Optimization Notice.