Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
173 Views

libifcoremt.so.5: undefined symbol: tbk_string_stack_signal_impl

Jump to solution

Hi, I'm trying to use JAVA call Fortran *.so file. The *.so file is just a "Print Hello" test. I first tried Fortran call Fortran, it worked just fine. But in my JAVA System.load("*.so") code, I got an error that that : libifcoremt.so.5: undefined symbol: tbk_string_stack_signal_impl

So I tried ldd -r *.so,and it showed the same error, and I tried ldd -r libifcoremt.so.5,it showed that there're several undefined symbols,

undefined symbol: pthread_key_create (./libifcoremt.so.5)
undefined symbol: dlsym (./libifcoremt.so.5)
undefined symbol: pthread_getspecific (./libifcoremt.so.5)
undefined symbol: pthread_setspecific (./libifcoremt.so.5)
undefined symbol: tck_string_stack_signal_impl (./libifcoremt.so.5)

And I tried c++filt tbk_string_stack_signal_impl

But the result is just

tbk_string_stack_signal_impl

So I don't know where the problem is.

Can you help me please. Thx so much.

0 Kudos

Accepted Solutions
Highlighted
Valued Contributor I
173 Views

The symbol is defined in libirc.so. If you source your compiler's environment variables, all libraries should be present, or if you link a fortran application using ifort as linker, it knows which libraries to include. With Java that is possibly different. So you need to tell your application to also include libirc.so, maybe providing the LD_LIBRARY_PATH is enough, but if you generate an executable using e.g. a C-based linker then you might have to explicitly link in -L<intel library path> -lirc.

 

View solution in original post

0 Kudos
3 Replies
Highlighted
Beginner
173 Views

I am still confused.

0 Kudos
Highlighted
Valued Contributor I
174 Views

The symbol is defined in libirc.so. If you source your compiler's environment variables, all libraries should be present, or if you link a fortran application using ifort as linker, it knows which libraries to include. With Java that is possibly different. So you need to tell your application to also include libirc.so, maybe providing the LD_LIBRARY_PATH is enough, but if you generate an executable using e.g. a C-based linker then you might have to explicitly link in -L<intel library path> -lirc.

 

View solution in original post

0 Kudos
Highlighted
Beginner
173 Views

Juergen R. wrote:

The symbol is defined in libirc.so. If you source your compiler's environment variables, all libraries should be present, or if you link a fortran application using ifort as linker, it knows which libraries to include. With Java that is possibly different. So you need to tell your application to also include libirc.so, maybe providing the LD_LIBRARY_PATH is enough, but if you generate an executable using e.g. a C-based linker then you might have to explicitly link in -L<intel library path> -lirc.

 

Really helped me locate the problem!!! Thank you so much!!

0 Kudos