Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6622 Discussions

what is the purpose of sointel64 in Custom Shared Object Builder



I follow the most simple example in mkl/tools/builder, just make intel64, and the nm, I can see symbol dgemm in it. On contrast, if I use make sointel64, I also get However, if I use nm, there is no symbol dgemm at all. In the first case, I directly link my dgemm program to and everything is fine. I the second case, ld said there is no symbol of dgemm.

I want to ask what is the purpose of sointel64 in Custom Shared Object Builder or how to use it correctly?

I use ubuntu16.04 64bits.

0 Kudos
2 Replies

Hi Chaowen,

The target `intel64` (which is equal to the target `libintel64`) creates custom-dll using objects from MKL static libraries. In this case everything works as expected. Target `sointel64` uses dynamic MKL libraries for this purpose. This is meaningful on Windows platform (this is the way to limit the number of exported functions) but has no sense on Linux platform. Most likely this option was added on Linux like a unification with Windows, and should be removed to not mislead MKL users.

Thank you for catching this.


Hi Chaowen,

Please follow this link to see the Usage of custom shared object builder:

The sointel64 uses the single dynamic library to build a custom shared object for Intel64 architecture. Inside of, other mkl library including mkl_core, mkl_intel_thread ... will be referred. While you use sointel64 generate custom lib, you have to make sure all other referred library are also copied to same path of So that, could find mkl_core linking with mkl.h. I recommend you to generate by using libintel64/libia32 so that you could generate static library.

Best regards,