Wpis z mikrobloga

Ohayo!
Budując na linuxie pluginowy runtime Kaiju natrafiłem na problem. Statyczna biblioteka runtime'owa potrafi ładować, odładować i wywołać funkcjonalność pluginowej biblioteki .so.
Problem jest z poprawnym zbudowaniem biblioteki .so:

gdy kompiluję .so z opcją -fPIC, to gcc karze mi skompilować z flagą -fPIC także libKaijuRuntime.a (której funkcjonalności to .so używa) - czy w takim razie muszę wszelkie libki używane przez .so przekompilować z flagą -fPIC?
Jeśli już przekompiluję libKaijuRuntime.a z flagą -fPIC, to kompilacja .so przechodzi, ale podczas wywołania funkcjonalności libKaijuRuntime.a z funkcji w .so powoduje zatrzymanie programu kodem 177 (o ile dobrze pamiętam).

Czy ja robię coś źle, czy o czymś zapomniałem? :(

EDIT: jeśli to coś pomoże: obie libki kompiluję z c++11.

EDIT2: a tu zrzut logu:

/usr/bin/ld: dependencies/KaijuRuntime/lib/Linux/libKaijuRuntime-d.a(Runtime.o): relocation R_X86_64_32 against '.rodata' can not be used when making a shared object; recompile with -fPIC
#programowanie #cpp #gcc #kaiju
  • 4