Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29234 토론

Missing needed library declaration in libifport.so ?

tmi
초급자
438 조회수

Hello, I'm using intel fortran compiler, 2025.1, on linux. It seems to me that `libifport.so.5` is missing a declaration that it needs `libifcoremt.so.5`, even though it relies on a symbol from that library -- ie, it crashes when loaded without libcorefmt. I can of course fix it for myself via `patchelf --add-needed libifcoremt.so.5 ./libifport.so.5`, but presumably it's a bug that should be fixed

0 포인트
2 응답
Ron_Green
중재자
353 조회수

libifcore* are the core runtime libraries.  If you are using libifport then it makes sense that it needs libifcore.  In this example the 'mt' variant is if you are doing threading of some sort. 

Are you explicitly loading shared objects with system API calls, yes, you will need to load libifcore.  That is a core library and is assumed you will load it.  ifport is an additional library with portability library functions and it is assumed you have libifcore loaded.  Every Fortran program or shared library needs ifcore.  

 

How are you building and running your app?  Are you explicitly loading .so with API calls?

0 포인트
tmi
초급자
302 조회수

the final app I'm running is a python script relying on it as a compiled extension, so the libraries in question end up loaded from `ctypes.CDLL` python call -- which uses the loader to load my library, first checking the `needed` section of the `.so` and loading those first. My `.so` declares `ifport` as needed, but not `ifcore` (because it does not directly use it). Thus for the standard linux loader to work, the `ifport` should declare `ifcore` as needed

 

the ouput of readelf -d libifport.so.5 in the version that I use is

0x0000000000000001 (NEEDED) Shared library: [libimf.so]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libintlc.so.5]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

0x000000000000000e (SONAME) Library soname: [libifport.so.5]

 

so my question is basically just why is libcoremt not included, when it is need by the library?

 

 

0 포인트
응답