繁体   English   中英

是否可以在没有源代码的情况下更改 cpp 程序的 libc?

[英]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页的文档,例如:

还要研究GNU libc和 Linux kernel的文档和源代码

因为它们是免费软件

所以我想知道是否可以将 glibc 更改为 cpp 程序?

的,这是可能的,不,这并不容易!

另请参阅schrootLinuxFromScratch

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM