- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to update a library built with IPP 7.0 to the latest version, 9.0 Update 1. It used the IPP speech codec libippsc which has been removed from official IPP 9.0 product, so I downloaded and install the IPP 9.0 legacy libraries (available with 9.0 release).
I've updated the corresponding sources, it's compiling fine, but when doing [static] linking, I get some errors, conflict between libippsc90lgc and libippcore :I've reproduced below some interesting parts of the linking command and the resulting error messages :
/usr/bin/cc -fPIC -m64 -Wall -Wextra -Wbad-function-cast -Wstrict-prototypes -march=core2 -mfpmath=sse -pthread -g -O3 -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE -D_BSD_SOURCE -DORTP_INET6 -DUSE_INTEL_IPP90LEGACY -DUSE_INTEL_IPP -DG729 [...] /opt/intel/ipp90legacy_lin/linux/lib/intel64/threaded/libippsc90lgc.a /opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libipps.a /opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libippcore.a -lcrypto -lpthread -lm -lortp -lrt -laio
/opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libippcore.a(owncpufeatures.o): In function `ownGetMaskFeatures':
/localdisk/commander/production/ipp901gold/linux_intel64/sources/core/src/owncpufeatures.c:(.text+0x0): multiple definition of `ownGetMaskFeatures'
/opt/intel/ipp90legacy_lin/linux/lib/intel64/threaded/libippsc90lgc.a(owncpufeatures.o):/localdisk/commander/lgc90/sources/core/src/owncpufeatures.c:(.text+0x0): first defined here
/opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libippcore.a(owncpufeatures.o): In function `ownGetFeature':
/localdisk/commander/production/ipp901gold/linux_intel64/sources/core/src/owncpufeatures.c:(.text+0x3c0): multiple definition of `ownGetFeature'
/opt/intel/ipp90legacy_lin/linux/lib/intel64/threaded/libippsc90lgc.a(owncpufeatures.o):/localdisk/commander/lgc90/sources/core/src/owncpufeatures.c:(.text+0x300): first defined here
/opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libippcore.a(owncpufeatures.o): In function `ownSetFeatureMask':
/localdisk/commander/production/ipp901gold/linux_intel64/sources/core/src/owncpufeatures.c:(.text+0x3e0): multiple definition of `ownSetFeatureMask'
/opt/intel/ipp90legacy_lin/linux/lib/intel64/threaded/libippsc90lgc.a(owncpufeatures.o):/localdisk/commander/lgc90/sources/core/src/owncpufeatures.c:(.text+0x320): first defined here
/opt/intel/ipp-9.0/ipp/lib/intel64/threaded/libippcore.a(owncpufeatures.o): In function `ownMaskIsFeatures':
/localdisk/commander/production/ipp901gold/linux_intel64/sources/core/src/owncpufeatures.c:(.text+0x420): multiple definition of `ownMaskIsFeatures'
/opt/intel/ipp90legacy_lin/linux/lib/intel64/threaded/libippsc90lgc.a(owncpufeatures.o):/localdisk/commander/lgc90/sources/core/src/owncpufeatures.c:(.text+0x340): first defined here
collect2: error: ld returned 1 exit status
How could I fix this linking problem ?
Thanks.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sid,
Thanks for your information. What changes did you make in the sources?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Shaojuan,
I've added new include file from the IPP 90 legacy library (as described in documentation) :
#ifdef USE_INTEL_IPP90LEGACY
/* I know these fonctions are obsolete */
# define IPP_LEGACY_WRN ""
# include "ippsc90legacy.h"
#endif
I've also updated the 'usc' sample library from 7.0 to latest available, in 8.0, and added the same include file in these sources…
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FYI, I' ve tried to change the order of IPP libraries from : ipp90lgc - ipps - ippcore
to : ippcore - ipp90lgc - ipps
and the link edition runs now flawessly :-) I'll check now itf the resulting library is running well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The change in library order was a bad idea, if the target library linking worked, I can't use it as required symbols were missing :-(
I've checked the 'readme.txt' from IPP 90 legacy package, and found I've forgotten to add the include "ippsc90legacy_redef.h" ; as I used also some legacy functions from IPP S library, I added also "ipps90legacy.h" and "ipps90legacy_redef.h".
Looking at Intel IPP 9.0 documentation, I saw I also need to add IPP VM module when using IPP S.
With all these updates, the library building is now OK, and also its use :-)
Thanks for your answer which drove me on the right track !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi!
Probably, you don't need to unclude redefs header files explicitly, because they are included in the corresponding "ipp*legacy.h" files.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page