基準: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
。