[英]Is it possible to change the libc for cpp program without source?
我已经从源代码构建并安装了另一个 glibc,并且我希望使用 c++ 编写现有的可执行文件,以便与自定义 glibc 一起运行以用于实验目的。 为了做到这一点,我尝试更改可执行文件的加载程序。 首先,在 /lib64 下创建了一个名为ld_linux-x86-64.so.2
的链接,其路径指向新的加载程序
sudo ln /home/ubuntu/glibc-2.27-amd64/lib/ld-2.27.so /lib64/ld_linux-x86-64.so.2
其次,通过文本编辑器修改了可执行文件中的加载器路径,将“/lib64/ld-linux-x86-64.so.2”更改为“/lib64/ld_linux-x86-64.so.2”。 我启动了可执行文件并收到以下错误:
./demo_cpp: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
修补后的 cpp 程序无法运行,似乎缺少 c++ 标准库。 但是,这种方法确实适用于纯 C 编写的程序。 使用此处提到的方法,我尝试了以下命令并得到完全相同的错误:
patchelf --set-interpreter /home/ubuntu/glibc-2.27-amd64/lib/ld-linux-x86-64.so.2 --set-rpath /home/ubuntu/glibc-2.27-amd64/lib demo_cpp
所以我想知道是否可以将 glibc 更改为 cpp 程序? 我是否也需要从源代码构建 cpp std lib?
我推荐阅读
阅读完上述所有书籍后,请考虑阅读几个 Linux man
页的文档,例如:
因为它们是免费软件!
所以我想知道是否可以将 glibc 更改为 cpp 程序?
是的,这是可能的,不,这并不容易!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.