如何让二进制程序依赖正确的libpthread库?
问题:让二进制程序依赖指定目录下的libpthread-2.31.so
当前目录文件
已从压缩包中解压出以下文件:
└─$ ls ld-2.31.so libc.so.6 libpthread-2.31.so professor professor.zip
运行程序时的错误
执行./professor时出现如下错误:
└─$ ./professor ./professor: ./libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib/x86_64-linux-gnu/libpthread.so.0)
依赖检查结果
通过ldd查看程序依赖,发现程序加载了系统路径下的libpthread.so.0,而非当前目录的libpthread-2.31.so:
└─$ ldd professor ./professor: ./libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib/x86_64-linux-gnu/libpthread.so.0) linux-vdso.so.1 (0x00007ffefb53f000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7d5ce0a000) libc.so.6 => ./libc.so.6 (0x00007f7d5cc18000) ./ld-2.31.so => /lib64/ld-linux-x86-64.so.2 (0x00007f7d5ce24000)
已尝试的方法
使用patchelf --set-rpath . professor尝试修改rpath,但无效——程序的rpath已经设置为.,加载器配置看似正确,仅libpthread的依赖未指向当前目录的文件。
提问
如何让该二进制程序正确依赖当前目录下的libpthread-2.31.so?
内容的提问来源于stack exchange,提问作者natitati
相关产品推荐
相关产品推荐

