技术解析

能否忽略库的版本号强制运行程序
0
2021-07-01 15:41:35
idczone
最近编译程序各种失败,决定偷懒拷贝一个在别的机器上编译好的版本。
但是执行的时候发现 glib 库错了一个小版本号

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found

我机器上的 glibc++的版本是 3.4.21 ,我想一个小版本号可能没有什么影响吧,看能不能强制运行一下试试。
重新连接即可,或者静态连接也 ok

有时可以,最好不要。
两个版本有什么不同可以看 release notes.

那你把那个机器上的 so 也拷过来嘛

何必挖个坑自己跳呢……
还是把编译环境搞好吧

把 glibc 静态链接到程序中即可

可以使用指定的 glibc ,参考
http://blog.csdn.net/github_36422112/article/details/52839737
http://xr0038.hatenadiary.jp/entry/2016/08/31/165011
http://stackoverflow.com/questions/33655731/error-while-importing-tensorflow-in-python2-7-in-ubuntu-12-04-glibc-2-17-not-f/34897674#34897674

ldd 分析下需要的库,用这个方法我把一个 Archlinux 上的 elf+so 拷到 Android 上,正常运行无问题

还设置了 LD_LIBRARY_PATH 变量为 archlinux 拷过来的 so 所在文件夹

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服