मैंने बिना किसी त्रुटि के पाइथन 2.7 को स्थिर रूप से संकलित किया है। अपने निर्माण के परीक्षण के लिए मैं यह स्निपेट का उपयोग करें:पायथन - Py_ संकलन के दौरान अनसुलझाइज करें
#include "Python.h"
int main()
{
Py_Initialize();
}
और मैं इसे इस तरह संकलन कर रहा हूँ:
$ 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
हालांकि, एक त्रुटि हुई। जीसीसी ने प्रसिद्ध undefined reference
का दावा किया है।
test.c :(पाठ + 0x1):। 'Py_Initialize'
मजे की बात करने के लिए अपरिभाषित संदर्भ मैं (शब्दाडंबर ध्वज के साथ जीसीसी इस्तेमाल किया मैं परिणाम यहाँ पेस्ट नहीं होगा) और संकलक कहते हैं, यह मेरे libpython का उपयोग कर रहा है, लेकिन संदर्भ नहीं मिला। तो मैं अपने स्थिर 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
हम देख सकते हैं, कि Py_Initialize
सही ढंग से pythonrun.o में संदर्भित है। हालांकि मुझे नहीं पता कि कैसे कंपेलर ने सही ऑब्जेक्ट फ़ाइल चुना है।
मेरे प्रश्न हैं:
- कैसे मुझे यकीन है कि हो सकता है, कि जीसीसी मेरी .a lib में सही वस्तु फ़ाइल का उपयोग करता है?
- क्या मेरे संकलन विकल्पों में कुछ गड़बड़ है?
आपकी सहायता के लिए धन्यवाद।
यह नहीं लिंकेज संकलन के दौरान के दौरान होने वाली एक त्रुटि है। – alk