Linux - 找到g ++ lib的路径

时间:2013-05-17 12:58:05

标签: c++ linux path linker g++

我安装了这两个库:过剩和卷曲。

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 个答案:

答案 0 :(得分:2)

它会检查/lib/usr/lib以及传递给-L的所有路径。

答案 1 :(得分:1)

链接器将查找-L选项指定的目录以及标准系统目录,通常为/lib/usr/lib。虽然您没有使用任何-L选项,但GCC通常会将一些选项传递给链接器,因此它可以找到GCC自己的库(例如C ++标准库),除非您使用-nostdlib。 GCC还将为-L环境变量的内容添加LIBRARY_PATH个选项。

要查看GCC传递给链接器的选项,您可以使用-v进行编译(详细信息)并查看链接器使用哪些库,您可以将-Wl,--trace传递给GCC,这会导致它通过{ {1}}到链接器,它使输出类似于:

--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库找到的库。 libs位于该路径中,因为在我的系统上,GCC将lcurl传递给链接器(通过编译-L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64显示)

您可以使用-v

规范化这些路径
readlink

答案 2 :(得分:0)

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html 它只是将字符串转换为文件名,然后检查它的正常位置。

答案 3 :(得分:0)

尝试

ldd /path/to/your/executable