动态加载程序如何使用正确的 arch 版本加载库

How does the dynamic loader load libs with correct arch version

对于基于 aarch64 的系统,如果我在不同的路径中提供 arm 和 arm64 版本的库 libtest.so,并将路径添加到 /etc/ld.so.conf.

我想知道如果一个应用程序依赖这个库,加载程序如何找到正确的版本libtest.so?

基本上,由于 ld.so.cache 中存在两个路径,所以加载器是否会根据应用程序的架构进行选择? 或者在 ld.so.conf 中为不同的拱门添加路径时是否需要任何规则?

我想知道它是如何工作的,非常感谢您提供任何信息。

我只是在系统上测试它,ldconfig -p输出两个库但指向不同的地方,然后 ld 将使用与目标的 arch 匹配的一个库。

所以 ld 将通过 arch 匹配 lib,对吗?

如有不妥请指正