我正在尝试构建两个程序的 32 位版本,并且都显示相同的错误消息
/usr/bin/ld: cannot find /media/34GB/Arquivos-de-Programas-Linux/Glibc-2.17-32bit/lib/libpthread.so.0
我当然明白为什么它找不到它,因为我将 Glibc 目录从上面的路径移动到:
/media/34GB/Arquivos-de-Programas-Linux-32bit/Glibc-2.17/lib/libpthread.so.0
但是,我不知道为什么 ld 会在这个错误的路径中寻找 libpthread。我在 /usr/lib32 中有一堆指向 Glibc lib 文件的符号链接,但这些都是正确的,其中负责 libpthread 的符号链接指向上面的第二条路径。我执行了 ldconfig 但没有效果
当我尝试构建第一个程序时,我认为我传递给配置的一些库已经硬链接了这个旧路径,所以这就是原因。
但是,当我在第二个程序上运行配置时,我不需要将任何库传递给它即可显示相同的错误消息,因此原因可能是其他的。
因此,我愿意接受任何关于 ld 为什么在旧目录中寻找 libpthread 的建议。
答案1
ld
.so
通过文件(符号链接或链接器脚本)查找库。您收到的错误表明它正在查找libpthread.so
指向 ; 的旧位置的a libpthread.so.0
。您需要更新它以指向新位置。