我想编译一个带有 .interp
段的共享库。
#include <stdio.h>
int foo(int argc, char** argv) {
printf("Hello, world!\n");
return 0;
}
我正在使用以下命令。
gcc -c -o test.o test.c
ld --dynamic-linker=blah -shared -o test.so test.o
我最终没有INTERP段,就好像我从未传递--dynamic-linker=blah
选项一样。请使用readelf -l test.so
进行检查。当构建可执行文件时,链接器会正确处理该选项并将INTERP段放入程序头中。那么我如何使其对共享库也起作用呢?
readelf -a /lib/x86_64-linux-gnu/libc.so.6 | grep INTERP
来查看。 - Jonathan Ben-Avraham