У меня есть библиотека x86_64 с закрытым исходным кодом, к которой я хочу получить доступ из Python в Linux.
Я обычно использую для этого ctypes.
Но эта библиотека поставляется в виде файла архива (* .a). Я не могу повторно связать библиотеку с динамическим * .so, потому что она была скомпилирована без опции -fPIC. ctypes нужна * .so dll.
Могу ли я, помимо жалобы упаковщикам этой библиотеки, поместить ее в * .so? Может, как-нибудь написать обёрточные функции?
Редактировать:
Попытка ответить на вопрос https://stackoverflow.com/a/2657390/4323:
gcc -shared -o closed_lib.so -Wl,--whole-archive -fPIC closed_lib.a -Wl,--no-whole-archive
/usr/bin/ld: closed_lib.a(myFFT.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile with -fPIC
closed_lib.a(myFFT.o): error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [closed_lib.so] Error 1