2011-08-19 126 views
4

我知道如何使用-Ldir选项添加到GNU ld的库搜索路径并广泛使用它。但就阅读gccld的手册而言,我可以说,没有办法添加到库搜索路径列表的末端添加到gnu ld库搜索路径的* end *

-L选项添加到开头,之后它搜索默认系统库路径。但是我想添加一个look-here-if-you-can-t-find-it-any-any-other-else路径。有没有办法用ld来做到这一点?

我可以想象一个提取所有标准库dirs(使用-print-search-dirs)的hacky-crap解决方案,并将它们按照我所希望的顺序添加到-L搜索dirs列表中,并将它们隐含的重复项默认搜索路径...

必须是一个更好的办法...

回答

0

我不认为你可以做你想做什么。但是,如果您有什么强制所有符号的你,包括疲弱与以下ld标志库:

-weak_library path_to_library 
      This is the same as listing a file name path to a library on 
      the link line except that it forces the library and all ref- 
      erences to it to be marked as weak imports. 

这样一来,如果其他库包括具有更强的符号,他们将覆盖符号在look-here-if-you-can't-find-it-anywhwere-else.so。如果在LD_LIBRARY_PATH中提到的库中没有定义更强的符号,则将使用look-here-if-you-can't-find-it-anywhwere-else.so中的弱符号。

+0

现在,如果我只记得触发这个问题的特定上下文...... –

+0

哈。尼斯... =) – sholsapp

0

/etc/ld.so.conf文件具有系统范围的目录路径列表,其中在编译时搜索库,换行符以这种文件的条目顺序排列。

修改该文件后,您必须运行ldconfig(以root身份),以便新设置变为活动状态。

+0

这听起来非常** **特定于Linux。不过,它可能适用于特定的环境。 –