I'm trying to build some code I've "inherited", that depends on IPP, with PGOPTI instrumentation for code coverage.
While doing so I'm running into linking issues such as:
/home/src/sdk/intel/IPP/lib/linux64/libippi.a(pimorphologyca_y8---ippiDilate_8u_C1R.o): In function `y8_ippiDilate_8u_C1R':
pimorphologyca_y8---ippiDilate_8u_C1R.i:(.text+0x15c): undefined reference to `y8_ippsMalloc_64s'
pimorphologyca_y8---ippiDilate_8u_C1R.i:(.text+0x2c3): undefined reference to `y8_ippsFree'
My guess is that the disabling of automatic CPU specialization is interfering with CPU dispatching in IPP libraries, but I've been unable to work around this.
Is this not possible to do and do I need to explicitly disable instrumentation on the components that link with IPP libraries?
Could anyone provide some assistance?
Yes, I forgot to mention, but linking without PGOPTI is fine.
The linker command doesn't depend on PGOPTI instrumentation and includes the mentioned static libraries. Explicitly these and in this order:
-lippcc -lippvc -lippi -lipps -lippvm -lippcore
Interestingly though, later on the linker command, some of these libraries appear again, like this:
Note, no reference to ipps or ippcore at that point.
I found this strange. It looks like another library that is in the component's CMakeLists.txt list of target_link_libraries has ippvc and ippi as dependencies. Adding ipps and ippcore to that solves the linking issue.
Why it linked fine without PGOPTI I don't know.