当我尝试如下使用LD_PRELOAD时,

LD_PRELOAD=getpid.so ./testpid

我收到以下错误...

ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.

我通过使用编译getpid.so

gcc -Wall -fPIC -shared -o getpid.so getpid.c

它包含以下代码...

// getpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

pid_t getpid(void)
{
    printf("Hello, world!\n");
    return syscall(SYS_getpid);
}

tespid.c包含使用getpid的代码,如下所示,并且该代码通过以下方式进行编译:

gcc testpid -o testpid.c

这可能是什么问题? 为什么LD_PRELOAD不起作用?

// testpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    printf( "pid = %d!\n", getpid() );

    return 0;
}

===============>>#1 票数:21 已采纳

当我尝试如下使用LD_PRELOAD时,

LD_PRELOAD=getpid.so ./testpid

我收到以下错误...

ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.

我通过使用编译getpid.so

gcc -Wall -fPIC -shared -o getpid.so getpid.c

它包含以下代码...

// getpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

pid_t getpid(void)
{
    printf("Hello, world!\n");
    return syscall(SYS_getpid);
}

tespid.c包含使用getpid的代码,如下所示,并且该代码通过以下方式进行编译:

gcc testpid -o testpid.c

这可能是什么问题? 为什么LD_PRELOAD不起作用?

// testpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    printf( "pid = %d!\n", getpid() );

    return 0;
}

===============>>#2 票数:0

当我尝试如下使用LD_PRELOAD时,

LD_PRELOAD=getpid.so ./testpid

我收到以下错误...

ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.

我通过使用编译getpid.so

gcc -Wall -fPIC -shared -o getpid.so getpid.c

它包含以下代码...

// getpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

pid_t getpid(void)
{
    printf("Hello, world!\n");
    return syscall(SYS_getpid);
}

tespid.c包含使用getpid的代码,如下所示,并且该代码通过以下方式进行编译:

gcc testpid -o testpid.c

这可能是什么问题? 为什么LD_PRELOAD不起作用?

// testpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    printf( "pid = %d!\n", getpid() );

    return 0;
}

  ask by MetallicPriest translate from so

未解决问题?本站智能推荐:

1回复

错误:ld.so:无法预加载LD_PRELOAD中的对象'libhugetlbfs.so':已忽略

我正在尝试运行一个简单的malloc程序,以查看我的大页面环境是否已正确设置。 libhugetlbfs仅安装在默认系统目录/ usr / local中。 操作系统是RHEL 6.7。 我检查了libhugetlbfs.so是否在/ usr / lib64文件夹中。 当我运行时,我用
4回复

错误:ld.so:对象LD_PRELOAD无法预加载:忽略

我使用的是ubuntu 12.04。 每次我启动我的bash终端,每次输入命令(并按回车键),我收到此消息: 错误:ld.so:LD_PRELOAD中的对象'/usr/lib/liblunar-calendar-preload.so'无法预加载:忽略。 真奇怪。 那么LD_
2回复

错误:ld.so:无法预加载来自LD_PRELOAD的对象'libgtk3-nocsd.so.0'

在Ubuntu 18.04上使用Hugo和AWS CLI时遇到此问题。 这是Ubuntu 18.04,Hugo和AWS CLI的全新安装。
1回复

LD_PRELOAD无法与我的程序配合使用

为了测试LD_PRELOAD,我编写了自己的getpid ,它会在使用dlsym调用原始getpid之前打印出一些内容。 代码如下。 但是,当我在程序中使用此类getpid并使用LD_PRELOAD运行它时,通过键入LD_PRELOAD=./prelib.so ./prog ,出现以下
5回复

如何在LD_PRELOAD中使用gdb

我运行带有LD_PRELOADing特定库的程序。 像这样。 如何使用gdb运行该程序?
1回复

在没有LD_PRELOAD的情况下在用户级别拦截系统调用

在我的程序中,我想在同一进程中拦截用户级别的每个系统调用(我不想使用单独的进程,例如ptrace或工具,例如strace )。 我也不想使用LD_PRELOAD。 我怎样才能做到这一点?
2回复

使用LD_PRELOAD指定多个文件

我知道如何用LD_PRELOAD覆盖一个库,例如,如下所示。 LD_PRELOAD =。/ getpid.so ./testpid 现在我的问题是如何覆盖多个文件。 假设我想覆盖getpid和getid,我该如何指定?
1回复

黑白llvm-ld和llvm-link的区别

llvm-ld和llvm-link有什么区别? 我想llvm-ld执行链接时间优化,而llvm-link不执行。 我对吗?
1回复

如何在makefile中包含* .so文件

对于一个程序,我正在链接静态glibc库(我修改过)。 我的makefile看起来像这样。 但是,我现在想要使用动态共享对象* .so文件,而不是使用静态* .a文件。 是否足以用makefile中的* .so文件替换* .a文件。 如果不是这样做的正确方法。 我试着简单地用ma
1回复

尝试在共享内存中写入时出现总线错误

我尝试通过shm_open和mmap使用共享内存。 但是,每当我尝试写入该内存时,都会出现总线错误。 最低限度的示例代码如下。 这里的问题是什么,如何解决? 我得到的输出如下