我已经从源代码处构建并安装了另一个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
所以我想知道是否可以为一个cpp程序更改glibc?我也需要从源代码处构建cpp标准库吗?
我推荐阅读
读完以上所有书籍后,请考虑阅读几个Linuxman
页面的文档,例如:
是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误
问题内容: 我们正在考虑将生产服务器从Ubuntu- Desktop 10.04 升级到Ubuntu- Server 12.04。 我们在当前的桌面操作系统上运行着各种服务,例如Selenium Web Driver。我的问题是Selenium Web Driver是否可以从基于cli的系统中运行? 我立即想到的是,它不能,因为它依赖Firefox,但我希望有人证明我做错了! 问题答案: 您正在寻
我想使用并使其直接进入给定的url,而不是从ribbon配置中获取主机。 我知道在Spring,cloud-feign默认与ribbon和eureka一起出现。 根据这个:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eure
我在网站上做了一个小研究,并在这个网站上回顾了相关主题,但答案是矛盾的:有人说这是不可能的,有人说这是可能的,但很危险。 目标是传递匿名类的对象作为RMI方法的参数。由于RMI要求,这个类必须是可序列化的。这里没有问题,很容易使类序列化。 但是我们知道内部类的实例包含对外部类的引用(匿名类是内部类)。因此,当我们序列化内部类的实例时,外部类的实例也被序列化为一个字段。问题来了:外部类是不可序列化的
在Spring Boot的文档中,我只找到了使用Redis会话的例子,不使用Redis也能使用它吗?
问题内容: 有关一些背景知识和参考,以下是一些Heroku文档页面的一些报价。 从Heroku Node.js支持>激活中: 当应用程序的根目录中有文件时,将使用Heroku Node.js buildpack 。 从Heroku Node.js支持>默认Web进程类型: 首先,Heroku寻找一个Procfile来指定您的进程类型。 如果在构建过程中应用程序的根目录中没有任何内容,则将通过运行[