- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
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
링크가 복사됨
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
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?
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
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?
