如何为共享库设置动态链接器路径?

ogn*_*ian 5 linker gcc shared-libraries elf ld

我想用一个.interp段编译一个共享库。

#include <stdio.h>

int foo(int argc, char** argv) {

    printf("Hello, world!\n");
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令。

gcc -c -o test.o test.c
ld --dynamic-linker=blah -shared -o test.so test.o
Run Code Online (Sandbox Code Playgroud)

我最终没有INTERP段,就好像我从未通过过该--dynamic-linker=blah选项一样。用检查readelf -l test.so。生成可执行文件时,链接器会正确处理该选项,并将INTERP段放在程序头中。如何使它也适用于共享库?

Mic*_*lon 2

INTERP 段仅进入需要首先加载 ELF 解释器 (ld.so) 的二进制文件。共享库没有 INTERP 段,因为在加载共享库之前 ELF 解释器已经加载。