LINUX.ORG.RU

Accessing a corrupted shared library

 , ,


0

3

Почему на выходе получается битая либа? gcc version 4.7.2, ld 2.23.1 . Раньше такое работало.

p1@libtest$ cat ./test.c 
#include<stdio.h>
const char interpreter[] __attribute__((section(".interp"))) = "/lib/ld-linux.so.2";

int test(void) {
    printf("test\n");
}

p1@libtest$ cat ./Makefile 
test.so: test.c
	gcc -shared -ggdb -fpic -pipe -Wl,-e,test ./test.c -o test.so -ldl


p1@libtest$ make
gcc -shared -ggdb -fpic -pipe -Wl,-e,test ./test.c -o test.so -ldl
p1@libtest$ ldd ./test.so 
/usr/bin/ldd: line 117: ./test.so: Accessing a corrupted shared library
★★★★★

Ответ на: комментарий от true_admin

__attribute__((section(".interp")))

А... зачем это? Разве это не забота линкера — поставить правильный интерпретатор?

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

А... зачем это?

чтобы можно было запускать .so-шки как обычные экзешники. В общем, я туда пример использования либы засунул. Это неправильно, но для мелкой либы мне так удобно. Да и хотелось поэкспериментировать.

true_admin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.