4

我知道如何使用 -Ldir 选项添加到 GNU ld 的库搜索路径并广泛使用它。但据我通过阅读gccld的手册可以看出,没有办法添加到库搜索路径列表的末尾

-L 选项添加到开头,然后搜索默认系统库路径。但我想添加一条“如果你无法找到它”的路径,请在此处查看。有没有办法用ld做到这一点?

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

必须有更好的方法......

4

2 回答 2

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

于 2012-02-19T20:43:33.293 回答
0

/etc/ld.so.conf文件有一个系统范围的目录路径列表,在编译时在其中搜索库,遵循换行符分隔的此类文件条目的顺序。

修改该文件后,您必须运行ldconfig(以 root 身份),以便新设置生效。

于 2012-09-12T13:33:59.470 回答