We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I am trying to integrate libamath.so (and libastring.so) in my program. But it seems that libm.so is used instead. I link the shared libraries something like this:
libamath.so
libastring.so
libm.so
$ gfortran -shared -L~/proj/lib -fPIC -lastring -lamath -lm -o ~/proj/lib/libmylib.so ~/data/proj/obj/myobj.o -lmy_archive
Then I run the program:
$ LD_DEBUG=bindings ~/proj/bin/myprog 1>/tmp/foo.txt 2>/tmp/foo.txt
And examining the bindings I get:
$ cat /tmp/foo.txt | grep log10 | grep libgfortran 2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10l' [GLIBC_2.17] 2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10' [GLIBC_2.17] 2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10f' [GLIBC_2.17]
$ cat /tmp/foo.txt | grep log10 | grep libgfortran
2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10l' [GLIBC_2.17]
2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10' [GLIBC_2.17]
2465474: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10f' [GLIBC_2.17]
Why isn't libamath.so used? If I preload it, then it appears to be used:
$ LD_DEBUG=bindings LD_PRELOAD=~/proj/lib/libamath.so ~/proj/bin/myprog 1>/tmp/foo.txt 2>/tmp/foo.txt
$ cat /tmp/foo.txt | grep log10 | grep libgfortran 2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10l' [GLIBC_2.17] 2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to ~/proj/lib/libamath.so [0]: normal symbol `log10' [GLIBC_2.17] 2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to ~/proj/lib/libamath.so [0]: normal symbol `log10f' [GLIBC_2.17]
2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to /lib/aarch64-linux-gnu/libm.so.6 [0]: normal symbol `log10l' [GLIBC_2.17]
2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to ~/proj/lib/libamath.so [0]: normal symbol `log10' [GLIBC_2.17]
2463666: binding file ~/proj/lib/libgfortran.so.5 [0] to ~/proj/lib/libamath.so [0]: normal symbol `log10f' [GLIBC_2.17]
What am I doing wrong?