आपका वर्तमान बिल्ड कमांड:g++ demo.cpp -o demo
लिंकर ld
. के लिए जानकारी शामिल नहीं है किन पुस्तकालयों के खिलाफ जोड़ा जाना चाहिए। उसके कारण आपको एक लिंकर त्रुटि मिलती है:
इस दस्तावेज़ में लिखा है कि किन पुस्तकालयों की आवश्यकता है।
आप या तो स्थिर या गतिशील रूप से लिंक कर सकते हैं।
स्थिर लिंकिंग इसका मतलब है कि आपका निष्पादन योग्य उन मशीनों पर चलेगा जिनमें आवश्यक पुस्तकालय स्थापित नहीं हैं क्योंकि पुस्तकालय निष्पादन योग्य के अंदर हैं। यह निष्पादन योग्य को आकार में भी बड़ा बनाता है। MySQL Connector/C++ के मामले में पुस्तकालय हैं:libmysqlcppconn-static.a
और libmysqlclient.a
डायनामिक लिंकिंग इसका मतलब है कि आपके निष्पादन योग्य को उस मशीन पर पुस्तकालयों को ढूंढना होगा जहां इसे चलाना चाहिए। आवश्यक पुस्तकालय है:libmysqlcppconn.so
।
डायनेमिक लिंकिंग . के साथ आपका बिल्ड कमांड (libmysqlcppconn.so
का उपयोग करके) ) इस तरह दिखना चाहिए:
g++ demo.cpp -o demo -lmysqlcppconn
इसके अलावा -l
. के बीच अंतर पर ध्यान दें और -L
जैसा कि बताया गया है यहाँ SO पर
या यहां आधिकारिक gcc लिंकर दस्तावेज़ में
:
आपको पथ की आवश्यकता नहीं है (-L
) यहाँ क्योंकि पुस्तकालयों को /usr/local/lib
. के अंतर्गत होना चाहिए जो कि डिफ़ॉल्ट संस्थापन है और पहले से ही लिंकर के खोज पथ में है।