gcc 版本 9 中 libm.a 的完整路径

gcc 版本 9 中 libm.a 的完整路径

基于此:https://stackoverflow.com/questions/5925678/location-of-c-standard-library
gcc --打印文件名=libm.a
返回:
/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libm.a


但是我找不到它。在当前目录(/usr/lib/gcc/x86_64-linux-gnu/9)中:我执行ls命令,返回以下内容:

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

仅有的f包括,包括,插入是目录。我已经检查过 libm.a 不存在。

为什么要麻烦,因为基于此链接。(https://www.linuxtopia.org/online_books/an_introduction_to_gcc/gccintro_17.html)如果我找到正确的 libm.a 完整路径,我应该能够执行以下命令。

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

但是以下命令仍然有效。

gcc -Wall calc.c -lm -o calc

答案1

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

gcc 给您提供的文件名中的“../”表示您转到父目录。

/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

所以,libm 实际上位于/usr/lib/x86_64-linux-gnu/libm.a.

相关内容