Python - Py_Initialize nierozwiązany podczas kompilacji
Python2.7 skompilowałem statycznie bez żadnego błędu. Aby przetestować moją kompilację, używam następującego fragmentu kodu:
#include "Python.h"
int main()
{
Py_Initialize();
}
I kompiluję to tak:
$ gcc -static -I/path/to/python/header -L/path/to/my/staticpythonlib \
-lpython2.7 -ldl -l_all_other_needed_lib /tmp/my_previous_snippet.c -o myouput
Wystąpił jednak błąd. gcc twierdzi, że jest sławnyundefined reference
.
test.c :(. text + 0x1): Niezdefiniowane odniesienie do „Py_Initialize”
Co ciekawe, użyłem gcc z flagą gadatliwości (nie wkleję tutaj wyniku) i kompilator mówi, że używa mojego libpythona, ale nie mógł znaleźć referencji. Wymieniłem więc symbole mojej statycznej biblioteki python2.7:
$ nm /path/to/pythonlib |grep Py_Initialize
frozenmain.o U Py_Initialize
pythonrun.o 0000009e9 T Py_Initialize
pythonrun.o 000000052 T Py_Initialize_Ex
main.o U Py_Initialize
Widzimy toPy_Initialize
jest poprawnie odwoływany w pythonrun.o. Nie wiem jednak, w jaki sposób kompilator wybrał właściwy plik obiektowy.
Moje pytania to:
Jak mogę się upewnić, że gcc używa poprawnego pliku obiektu w mojej lib .a?Czy jest coś nie tak w moich opcjach kompilacji?Dzięki za pomoc.