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

IPP on WSL2

Daniel_D
Beginner
974 Views

Hi,

 

I try to use the oneAPI Base Toolkit (IPP) toolkit in my application. On windows it works well and I'm now working on the Linux version. On windows I use the latest oneAPI 2022 - on Linus I think just the version 2021.4 is available. So I try to use this one. Since cmake "find_package(IPP REQUIRED)" is not working I add all folders (include/lib) and the required libraries manually.

 

 

I have one share library and one application that uses this shared library. In the share library I use the function ippsEncodeLZSS/ippsDecodeLZSS for compression and decompression. Since I do not use IPP somewhere else I want to link my shared library statically to the IPP/oneAPI functions.

 

here is the sections from cmake to link IPP to my shared library:

target_link_libraries( myLib ipps.a )
target_link_libraries( myLib ippcore.a )
target_link_libraries( myLib ippvm.a )

 

In my app I use this shared library. During linking I see IPP related unresolved references coming from my shared library - so statically linking didn't work the way I tried it.

What I get is this:
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsDecodeLZSSInit_8u'
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsEncodeLZSSInit_8u'
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsEncodeLZSS_8u'
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsEncodeLZSSFlush_8u'
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsLZSSGetSize_8u'
/home/user/.vs/Libraries/out/build/linux-Debug/myLib/myLib.so: undefined reference to `ippsDecodeLZSS_8u'

 

Interesting is that I do not see undefined reference to ippsMalloc and ippsFree which I also use in the functions for compression and decompression.

 

UPDATE:

ippsMalloc and ippsFree is resolved just in the DEBUG configuration. If I compile a RELEASE version  ippsMalloc and ippsFree are unresolved references.

 

 

Does anyone have any idea what I'm doing wrong? How can I use IPP  so that it links statically to my shared library - if that is possible at all?

 

Thanks,

Daniel

 

 

 

 

 

0 Kudos
1 Solution
VidyalathaB_Intel
Moderator
939 Views

Hi Daniel,

 

Thanks for reaching out to us.

 

>> How can I use IPP so that it links statically to my shared library - if that is possible at all?

 

Could you please try adding the below line to your CMake file and try recompiling the application?

 

target_link_libraries( myLib ippdc.a )

 

Please do let us know if you still face any issues by providing us with a minimal reproducer and necessary CMake files (& steps to reproduce if any) so that we can work on it from our end.

 

Regards,

Vidya.

 

View solution in original post

0 Kudos
3 Replies
VidyalathaB_Intel
Moderator
940 Views

Hi Daniel,

 

Thanks for reaching out to us.

 

>> How can I use IPP so that it links statically to my shared library - if that is possible at all?

 

Could you please try adding the below line to your CMake file and try recompiling the application?

 

target_link_libraries( myLib ippdc.a )

 

Please do let us know if you still face any issues by providing us with a minimal reproducer and necessary CMake files (& steps to reproduce if any) so that we can work on it from our end.

 

Regards,

Vidya.

 

0 Kudos
Daniel_D
Beginner
933 Views

Hi,

 

thanks for your reply. Yes - that did the trick.

 

Thanks a lot.

 

Maybe it is a useful information if you add this library in the list of decencies in your documentation?

 

DecodeLZSSInit (intel.com)

 

 

Daniel

0 Kudos
VidyalathaB_Intel
Moderator
860 Views

Hi Daniel,


Thanks for accepting our solution.


>>Maybe it is a useful information if you add this library in the list of decencies in your documentation?


You can refer to the below IPP developer guide for more details

https://www.intel.com/content/www/us/en/develop/documentation/dev-guide-ipp-for-oneapi/top/ipp-theory-of-operation/ipp-domain-details/library-dependencies-by-domain.html


As your issue is resolved we are closing this thread from our end.

If you need any additional assistance from Intel, please post a new question as this thread will no longer be monitored.


Regards,

Vidya.


0 Kudos
Reply