当前位置: 首页 > 面试题库 >

有没有办法在Linux上检查当前的rpath?

晋西岭
2023-03-14
问题内容

我知道可以用来readelf -d <elf> | grep RPATH从外壳检查给定的二进制文件,但是有可能在一个进程中执行此操作吗?

类似于(我完全组成了系统调用):

  /* get a copy of current rpath into buffer */
  sys_get_current_rpath(&buffer);

我正在尝试在我们的代码库中诊断一些可疑的SO链接问题,并且希望在可能的情况下以这种方式检查RPATH(我宁愿不必生成外部脚本)。


问题答案:
#include <stdio.h>
#include <elf.h>
#include <link.h>

int main()
{
  const ElfW(Dyn) *dyn = _DYNAMIC;
  const ElfW(Dyn) *rpath = NULL;
  const char *strtab = NULL;
  for (; dyn->d_tag != DT_NULL; ++dyn) {
    if (dyn->d_tag == DT_RPATH) {
      rpath = dyn;
    } else if (dyn->d_tag == DT_STRTAB) {
      strtab = (const char *)dyn->d_un.d_val;
    }
  }

  if (strtab != NULL && rpath != NULL) {
    printf("RPATH: %s\n", strtab + rpath->d_un.d_val);
  }
  return 0;
}


 类似资料:
  • 由于TypeScript是强类型的,因此简单地使用来检查和听起来是不对的。 TypeScript是否有任何专门的函数或语法糖对此?

  • 问题内容: 我正在使用Python中的subprocess.Popen启动许多子流程。我想检查一个这样的过程是否已经完成。我发现了两种检查子流程状态的方法,但似乎都可以迫使流程完成。一种是使用process.communicate()并打印返回代码,如解释在这里。另一种方法是简单地调用process.wait()并检查它是否返回0。 有没有一种方法可以检查进程是否仍在运行,而无需等待进程完成? 问

  • 问题内容: 我们正在开发S60版本,该平台具有不错的Python API。 但是,关于Android上的Python尚无任何官方资料,但是由于Jython存在,有没有办法让蛇和机器人一起工作? 问题答案: 一种方法是使用: 开源Python库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序。 可在和上运行。你可以在所有受支持的平台上运行相同的代码。

  • 我知道Java中有无限的流。 有没有办法检查流是否有限? 类似这样的方法

  • 如果没有,有没有办法用docx4j或Aspose来实现这一点? 我偶然发现了docx模板Docx4j替换java中的文本的问题。它描述了我面临的实际问题,即模板变量(如)由于拼写检查而在文本运行中中断。然而,他的解决办法对我来说行不通。我能实现的最好的解决方案是在引擎盖下自动禁用(或者重新启用)拼写检查。

  • 我找不到docker文件。NET框架应用程序在linux上,我需要在托管在ec2 linux服务器上的jenkins上运行docker构建,但只有。NET Core可以在linux上构建。