<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic It isn't a trick, it is in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025490#M23616</link>
    <description>&lt;P&gt;It isn't a trick, it is native behaviour of Linux link tool to link shared libraries at the first priority.&lt;/P&gt;

&lt;P&gt;Pavel&lt;/P&gt;</description>
    <pubDate>Thu, 29 May 2014 11:38:00 GMT</pubDate>
    <dc:creator>Pavel_B_Intel1</dc:creator>
    <dc:date>2014-05-29T11:38:00Z</dc:date>
    <item>
      <title>Static linking of IPP 8.1 in Linux</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025487#M23613</link>
      <description>&lt;P&gt;I've been using the IPP successfully on Windows for a long time, but am now trying to port my application over to Linux. My project architecture requires that I link the IPP libraries statically into my own code, which itself is compiled as a Shared Library.&lt;/P&gt;

&lt;P&gt;In Windows, and in Linux up to IPP 7.0, the names of the static and dynamically-linked versions of the libraries differed, with the static versions having filenames ending in 'mt' (in Windows) and '_l' (in Linux). Therefore, if I'd wanted to link the static V7.0 libraries then it looks like my makefile would have needed to contain the line:&lt;/P&gt;

&lt;P&gt;IPPLIB = -lippac_l -lippdc_l -lippcc_l -lippcv_l etc.&lt;/P&gt;

&lt;P&gt;However, it appears that in IPP 8.0 onwards the distinction in names has been abolished (at least in Linux), and so if I list the contents of the /opt/intel/composer_xe_2013_sp1/ipp/lib/intel64 directory I see:&lt;/P&gt;

&lt;P&gt;libippac.a&amp;nbsp;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;libippac.so&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;libippac.so.8.1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;libippace9.so etc.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;It seems obvious enough that the .a files are the static libraries and the various .so files are the shared libraries for various different processors. However, I can't work out how to access the static libraries. If I do the naive thing, and put this line into my makefile:&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;IPPLIB = -lippac -lippdc -lippcc -lippcv etc.&lt;/P&gt;

&lt;P&gt;...then the compilation completes cleanly, but at runtime I get bombarded with messages to the effect of "lipippac.so not found" so the compiler obviously thinks that it actually linked the shared versions. If I try to make things more explicit, with:&lt;/P&gt;

&lt;P&gt;IPPLIB = -lippac.a -lippdc.a -lippcc.a -lippcv.a etc.&lt;/P&gt;

&lt;P&gt;...then this simply fails to compile, the first error message (of a large number) being "cannot find -lippi.a".&lt;/P&gt;

&lt;P&gt;So, what is the correct syntax for linking static IPP libraries into my own shared library?&lt;/P&gt;</description>
      <pubDate>Wed, 28 May 2014 12:57:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025487#M23613</guid>
      <dc:creator>eos_pengwern</dc:creator>
      <dc:date>2014-05-28T12:57:58Z</dc:date>
    </item>
    <item>
      <title>You in IPP 8.0 we changed</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025488#M23614</link>
      <description>&lt;P&gt;You in IPP 8.0 we changed libraries name convention to native OS, so you have 2 options:&lt;/P&gt;

&lt;P&gt;1) use "-static" option:&lt;BR /&gt;
	(man ld):&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-static&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Do not link against shared libraries. &amp;nbsp;This is only meaningful on platforms for which &amp;nbsp;shared &amp;nbsp;libraries &amp;nbsp;are&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supported. &amp;nbsp; The &amp;nbsp;different &amp;nbsp;variants of this option are for compatibility with various systems. &amp;nbsp;You may use&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this option multiple times on the command line: it affects library searching for -l options which follow &amp;nbsp;it.&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;This option also implies --unresolved-symbols=report-all.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;2) if you use static libraries only - link the libraries by using full path and full library name, for example $IPPROOT/lib/ia32/libippac.a&lt;/P&gt;

&lt;P&gt;from my point of view option 2 is more better because you can mix linking: link with IPP static libraries and with shared runtime libraries.&lt;/P&gt;

&lt;P&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Thu, 29 May 2014 06:17:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025488#M23614</guid>
      <dc:creator>Pavel_B_Intel1</dc:creator>
      <dc:date>2014-05-29T06:17:00Z</dc:date>
    </item>
    <item>
      <title>Thank you, that seems to do</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025489#M23615</link>
      <description>&lt;P&gt;Thank you, that seems to do the trick. For comparison, I looked at the MKL link-line advisor to see how the same issue is handled there, and the pattern is just as you've described.&lt;/P&gt;</description>
      <pubDate>Thu, 29 May 2014 11:35:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025489#M23615</guid>
      <dc:creator>eos_pengwern</dc:creator>
      <dc:date>2014-05-29T11:35:29Z</dc:date>
    </item>
    <item>
      <title>It isn't a trick, it is</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025490#M23616</link>
      <description>&lt;P&gt;It isn't a trick, it is native behaviour of Linux link tool to link shared libraries at the first priority.&lt;/P&gt;

&lt;P&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Thu, 29 May 2014 11:38:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Static-linking-of-IPP-8-1-in-Linux/m-p/1025490#M23616</guid>
      <dc:creator>Pavel_B_Intel1</dc:creator>
      <dc:date>2014-05-29T11:38:00Z</dc:date>
    </item>
  </channel>
</rss>

