我在很多地方读到有关“真实”库名和符号链接名的内容。
但我想了解链接器究竟是如何搜索的?有时我看到三种不同的库设置模式。-> 表示符号链接
- libxxx.so -> libxxx.so.1 -> libxxx.so.1.6.3
- libxxx.so.1->libxxx.so.1.6.3
- libxxx.so -> libxxx.so.1.6.3
并且 readelf -a xxx | grep SONAME 显示 libxxx.so.1。适用于所有实际和符号链接。
我不明白的是链接器如何搜索。现在假设我告诉链接器我想要 -lxxx,链接器会去查找带有 libxxx.so 的文件名,还是会搜索 libxxx.so.1?如果是前者,则意味着 2 将不起作用;如果是后者,则意味着 3 将不起作用。但我认为所有 1、2、3 都有效?还是无效?那么这是否意味着链接器搜索与前缀匹配的内容?