Linking version 8 IPP with Xcode 4.6

Linking version 8 IPP with Xcode 4.6

I am developing a Macintosh cocoa (objective c) application using xcode 4.6 and the Apple compilers.  I setup my project to link to the static (.a files ) IPP libraries.   However,  when I run the application, the dynamitic IPP libraries try to load and the application fails to run.

Is there any documentation/example projects on how to build xcode 4.6 with IPP version 8?   What is the standard method for packaging and shipping an application that uses Intel IPP libraries when I distribute my application?

Note: I have found documentation for using xcode 2 and 3 but none for xcode 4.

http://software.intel.com/en-us/articles/intel-integrated-performance-pr...

10 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

There is no such article but the pipeline will be the similar. You need take into account that in IPP 8.0 all libraries were renamed: IPP library "_l" and "_t" suffixes removed. A new OS native convention is now implemented: Windows* static libraries now have an "mt" suffix for both single and multi-threaded libraries. Please refer to the Release Note.

I have the same problem.
When I try to statically link the IPP 8 in xcode 4.6 the application fails and says libippcore-8.0.dylib not loaded.
Before when I was using IPP 7 the application worked correctly. 

What are the steps to statically link to IPP 8 in xcode 4.6? I'm using the following libraries:
libippcore.a
libipps.a
libippvm.a 

I'm using the Apple LLVM 4.2 compiler.
I need to link these libraries without dependencies to other dynamically loaded libraries.

Hi Jan,

Did you set DYLD_LIBRARY_PATH  variable before running the application? Do you have libippcore-8.0.dylib file itself?

Regards,
Sergey 

Regards, Sergey

Hello Sergey,

Yes I do have the libippcore-8.0.dylib file but why is that file needed for static linking anyway? With version 7 of IPP I just needed link to the static *.a libraries.

I don't want to have to distribute dylib files with the product.

I am seeing this behavior trying to statically link IPP 8.0 from XCode 5. Was this ever resolved?

Hello,

the best way to link an application with static libraries is point full path+libname in the link string, for example:

g++ -o mytest mytest.cpp -I $IPPROOT/include $IPPROOT/lib/libippi.a $IPPROOT/lib/libipps.a $IPPROOT/lib/libippcore.a

In IPP 8.x we renamed IPP libraries according native OS name convention.

Pavel

From Xcode, I add the libipp*.a files directly from the full path under "Link Binary With Libraries". But when I try to run, I get the error that Library not loaded: ./libippcc-8.0.dylib. Should I be linking a different way?

Quote:

gpers wrote:

From Xcode, I add the libipp*.a files directly from the full path under "Link Binary With Libraries". But when I try to run, I get the error that Library not loaded: ./libippcc-8.0.dylib. Should I be linking a different way?

I'm having this exact issue. I've also tried every possible permutation of path settings for each .a file under Frameworks (absolute, relative to IPP root, IPP lib directory, etc.) No change in behavior - for some reason it's still trying to link dynamically when all I ever want to do is link statically.

I'm running XCode 5.1.1 in OS X 10.9.4 with Intel IPP 8.2. Any help would be greatly appreciated!

UPDATE: I got this resolved. This is purely an XCode issue. Because there is no obvious, explicit way to get XCode to ignore all the .dylib files and use the .a files (even though I explicitly added only the .a files in the build steps), I simply added "dylib" folders inside my lib folders, and moved all the dylibs there (so XCode won't see them with recursion disabled.) Voila, problem solved (albeit inelegantly.)

发表评论

登录添加评论。还不是成员?立即加入