0

based on this: https://stackoverflow.com/questions/5925678/location-of-c-standard-library
gcc --print-file-name=libm.a
return:
/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.a


However I cannot found it. In current directory(/usr/lib/gcc/x86_64-linux-gnu/9): I do ls command, return following:

cc1          crtfastmath.o      finclude           libcaf_single.a  libgfortran.spec  liblsan.so              libobjc_gc.so       libsupc++.a
cc1plus      crtoffloadbegin.o  include            libcc1.so        libgomp.a         liblsan_preinit.o       libquadmath.a       libtsan.a
collect2     crtoffloadend.o    libasan.a          libgcc.a         libgomp.so        liblto_plugin.so        libquadmath.so      libtsan.so
crtbegin.o   crtoffloadtable.o  libasan.so         libgcc_eh.a      libgomp.spec      liblto_plugin.so.0      libsanitizer.spec   libubsan.a
crtbeginS.o  crtprec32.o        libasan_preinit.o  libgcc_s.so      libitm.a          liblto_plugin.so.0.0.0  libssp_nonshared.a  libubsan.so
crtbeginT.o  crtprec64.o        libatomic.a        libgcov.a        libitm.so         libobjc.a               libstdc++.a         lto-wrapper
crtend.o     crtprec80.o        libatomic.so       libgfortran.a    libitm.spec       libobjc.so              libstdc++.so        lto1
crtendS.o    f951               libbacktrace.a     libgfortran.so   liblsan.a         libobjc_gc.a            libstdc++fs.a       plugin

only finclude, include, plugin are directory. I already checked libm.a is not there.

Why bother, because base on this link.(https://www.linuxtopia.org/online_books/an_introduction_to_gcc/gccintro_17.html) I should able to do the following command if I found out the proper libm.a full path.

gcc -Wall calc.c /usr/lib/libm.a -o calc

However the following command still works.

gcc -Wall calc.c -lm -o calc

1 Answer 1

1

/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.a

The '../' in the file name gcc gave you means that you go up to the parent directory.

/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.a
= /usr/lib/gcc/x86_64-linux-gnu/../../x86_64-linux-gnu/libm.a
= /usr/lib/gcc/../x86_64-linux-gnu/libm.a
= /usr/lib/x86_64-linux-gnu/libm.a

So, libm is actually located at /usr/lib/x86_64-linux-gnu/libm.a.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.