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.

관련 정보