我想使用 glibc
版本 2.31
两个ubuntu 20.04
和 ubuntu 18.04
条件是它不应该安装在系统目录中。但是,我得到一个错误。
我有 Dockerfile:
FROM ubuntu:20.04 as container_20_04
WORKDIR /root
RUN apt update && apt download libc6
RUN dpkg-deb -x libc6_2.31-0ubuntu9.2_amd64.deb /root/debs-install
RUN LD_LIBRARY_PATH=/root/debs-install/lib/x86_64-linux-gnu mkdir some_dir
FROM ubuntu:18.04
WORKDIR /root
COPY --from=container_20_04 /root/debs-install /root/debs-install
RUN LD_LIBRARY_PATH=/root/debs-install/lib/x86_64-linux-gnu mkdir some_dir
请注意,相同的命令 LD_LIBRARY_PATH=/root/debs-install/lib/x86_64-linux-gnu mkdir some_dir
在两个容器中运行。然后我运行:
$ docker build . -t smashing
在 ubuntu 20.04
容器中的命令没有错误,但是在 ubuntu 18.04 容器中相同的命令我得到一个错误:*** stack smashing detected ***: terminated
Aborted (core dumped)
您能否告诉我这里发生了什么或如何调试它?
最佳答案
Could you please tell, what happens here or how it can be debugged?
This answer解释为什么设置
LD_LIBRARY_PATH
指向不同的libc.so.6
永远无法工作:您必须使用匹配 ld-linux
也是。
关于linux - 为什么在旧版本的 ubuntu 上使用新版本的 glibc 时会发生堆栈粉碎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66977148/