链接 - 包含哪个库?

时间:2011-05-16 16:32:26

标签: linker

gcc手册页说,“当您使用相同类型的多个选项时,顺序确实很重要;例如,如果多次指定-L,则按指定的顺序搜索目录。 “

但是,这些-L目录是否在系统目录之前搜索过(例如,ld通常使用的目录)?

我的情况是我有两个同名的库,一个在系统位置,另一个在我的工作目录中,我想使用我的,但无法弄清楚如何验证我的版本正在被使用。< / p>

1 个答案:

答案 0 :(得分:1)

尝试“ldd / bin / your / application”。 E.g:

ldd `which bash`
linux-vdso.so.1 =>  (0x00007fff46eda000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007facdd618000)
libdl.so.2 => /lib/libdl.so.2 (0x00007facdd414000)
libc.so.6 => /lib/libc.so.6 (0x00007facdd090000)
/lib64/ld-linux-x86-64.so.2 (0x00007facdd863000)

一般来说,有三个选项可以指定哪个库用于二进制文件:

  1. 在启动可执行文件之前设置LD_LIBRARY_PATH环境变量
  2. RPATH链接器选项(请参阅我在SO上的其他问题/答案以了解有关此选项的更多信息)
  3. 将您的共享库添加到所有其他系统库。