惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Y
Y Combinator Blog
博客园_首页
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
B
Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
WordPress大学
WordPress大学
L
LangChain Blog
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Help Net Security

kkocdko's blog

Tasker 永久试用修改思路 - kkocdko's blog 极限压缩文档扫描件 - kkocdko's blog Bypass the Blank Chars Detection crknob - Chrome portable patch 我如何将博客首页体积降至 3 KB - kkocdko's blog 如何极限优化压缩文件体积 - kkocdko's blog EmEditor 精简版 - kkocdko's blog Backup Data from VSCode Web 优雅地游玩 Minecraft - kkocdko's blog 让程序以管理员权限运行的 PE 清单 - kkocdko's blog 注销 ZEIT 账号之后遇到的坑 - kkocdko's blog 本博客的协议已更改为 CC0 - kkocdko's blog mobp - 使 MSOffice 后台常驻 在安装 VS 生成工具时规避 .NET 安装错误 各种格式的占位空文件 - kkocdko's blog 优雅地游玩 Flash 游戏 - kkocdko's blog WPS 2016 极限精简版 - kkocdko's blog Convert Const to Let by Terser 规避 Visual Studio 许可证过期的 Bug 方便地使用 iPod - kkocdko's blog 用 UserJS 注入 UserCSS - kkocdko's blog 注册表修改文件关联(默认程序) - kkocdko's blog 周期精准的太阳系模型 - kkocdko's blog 关闭屏幕的 WinAPI - kkocdko's blog 重置 Windows 图标缓存 - kkocdko's blog AIDA64 极限精简单文件版 - kkocdko's blog 几何画板单文件精简版 - kkocdko's blog 世界之窗浏览器单文件版 - kkocdko's blog 在 MBR + Legacy 下用 Bootmgr 引导 Ubuntu 简洁的 Markdown 预览工具 - kkocdko's blog
Right path to use new glibc on old Linux
2026-04-11 · via kkocdko's blog

Run a old debian:10 for our tutorial.

docker run --rm -it --net host debian:10

Below code run inner the container.

# apt update and install
apt update
apt install -y curl unzip busybox binutils xz-utils

# show versions
apt list --installed 2>&1 | grep -e "libstdc++6/" -e "libc6/" -e "libgcc1/"

# download a binary that needs new glibc
curl -o mp4box.zip -L https://github.com/clevert-app/clevert/releases/download/asset_mp4box_2.4.0_9165791950/linux-x64.zip
unzip mp4box.zip
./mp4box
# ./mp4box: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./mp4box)

# you can get glibc version which is used by this elf, https://stackoverflow.com/a/73388939/
nm --dynamic --undefined-only --with-symbol-versions ./mp4box | grep GLIBC | sed -e 's#.\+@##' | sort --unique

# create an assets dir
mkdir root

# download and extract latest glibc https://packages.debian.org/sid/amd64/libc6/download
curl -o downloaded.deb -L http://ftp.debian.org/debian/pool/main/g/glibc/libc6_2.40-1_amd64.deb
ar p downloaded.deb data.tar.xz | tar -Jx -C root
rm -rf downloaded.deb data.tar.xz

# (optional) download and extract latest libgcc https://packages.debian.org/sid/amd64/libgcc-s1/download
curl -o downloaded.deb -L http://ftp.debian.org/debian/pool/main/g/gcc-14/libgcc-s1_14.1.0-1_amd64.deb
ar p downloaded.deb data.tar.xz | tar -Jx -C root
rm -rf downloaded.deb data.tar.xz

# (optional) download and extract latest libstdc++ https://packages.debian.org/sid/amd64/libstdc++6/download
curl -o downloaded.deb -L http://ftp.debian.org/debian/pool/main/g/gcc-14/libstdc++6_14.1.0-1_amd64.deb
ar p downloaded.deb data.tar.xz | tar -Jx -C root
rm -rf downloaded.deb data.tar.xz

# run with latest glibc
LD_LIBRARY_PATH=$(pwd)/root/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH ./root/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ./mp4box -version

# we can also use patchelf
patchelf --set-interpreter $(pwd)/root/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 --set-rpath $(pwd)/root/usr/lib/x86_64-linux-gnu ./mp4box
./mp4box

# wrong usage, cause Segmentation fault
LD_PRELOAD=/foo/bar ./mp4box -version

# wrong usage, cause relocation error: /glibc/usr/lib/libc.so.6: symbol _dl_audit_symbind_alt version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
LD_LIBRARY_PATH=$(pwd)/root/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH ./mp4box -version

Reference