0

glut と curl の 2 つのライブラリをインストールしました。

sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install freeglut3-dev

私が使用するプログラムをコンパイルする必要があるとき:

g++ -o executable file11.cpp file2.cpp -lglut -lcurl

そしてそれは動作します!

リンカーが「-lglut」または「-lcurl」を検索する場所を知るにはどうすればよいですか?

「-lsomething」はパスに対応しています。どうすればわかりますか?

4

4 に答える 4

2

/lib/usr/lib、および に渡されたすべてのパスをチェックし-Lます。

于 2013-05-17T13:00:04.173 に答える
1

リンカは、-Lオプションで指定されたディレクトリと標準のシステム ディレクトリ (通常は/lib/usr/lib. オプションを使用していない場合でも、-LGCC は通常、いくつかをリンカーに渡すので、使用しない限り、GCC 独自のライブラリ (C++ 標準ライブラリなど) を見つけることができます-nostdlib。GCC は、環境変数-Lの内容のオプションも追加します。LIBRARY_PATH

GCC がリンカーに渡すオプションを確認するには-v(詳細)、リンカーが使用するライブラリを確認するには-Wl,--trace、GCC に渡すことができます--trace

/usr/bin/ld: mode elf_x86_64
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crt1.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/crtbegin.o
/tmp/ccJHrbSx.o
-lglut (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/libglut.so)
-lcurl (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/libcurl.so)
-lgcc_s (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so)
/lib64/libc.so.6
(/usr/lib64/libc_nonshared.a)elf-init.oS
/lib64/ld-linux-x86-64.so.2
-lgcc_s (/usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so)
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/crtend.o
/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crtn.o

-lglutこれは、システム上のおよびlcurllibs で見つかったライブラリを示しています。-L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64私のシステムではGCCがリンカーに渡されたため、ライブラリはそのパスで見つかりました(でコンパイルすることで表示されます-v

を使用してこれらのパスを正規化できますreadlink

$ readlink -f /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/
/usr/lib64/
于 2013-05-18T11:38:28.627 に答える
0

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 文字列をファイル名に変換し、通常の場所をチェックするだけのようです。

于 2013-05-17T13:07:47.570 に答える