मैं देख रहा हूँ यह libmysqlclient.so.16
पर एक निर्भरता है कि जब मैं इस तरह के libphp5.so
के रूप में एक साझा लाइब्रेरी के खिलाफ ldd
चलाएँ:लिनक्स पर साझा लाइब्रेरी निर्भरता पथ कैसे निर्धारित किए जाते हैं?
$ ldd ./libphp5.so libmysqlclient.so.16 => /usr/lib/mysql/libmysqlclient.so.16 [other dependencies snipped out]
इन निर्भरता फ़ाइल नाम और पथ (/usr/lib/mysql/libmysqlclient.so.16
) कर रहे हैं साझा लाइब्रेरी बाइनरी में शामिल किया हुआ? या फिर इस मार्ग जो संयोग से होती हैं, जैसे /etc/ld.so.conf.d/mysql-i386.conf
के माध्यम से के रूप में कुछ अन्य साधनों, द्वारा निर्धारित किया जाता है:
/usr/lib/mysql/
एक अन्य बात यह है कि मुझे puzzling है:
कि मैं स्रोत से संकलन किसी साझा लाइब्रेरी मेरे पास नहीं है। इसकी libmysqlclient_r
पर निर्भरता है। gcc
संकलक स्विच की तरह इस इस पुस्तकालय नज़र निर्माण करने के लिए:
gcc -shared -L/usr/lib/mysql -lmysqlclient_r [+various other switches]
जब मैं ldd mylib.so
करना मैं देख रहा हूँ:
libmysqlclient_r.so.16 => /usr/lib/mysql/libmysqlclient_r.so.16 (0x0055c000)
हालांकि /usr/lib/mysql
निर्देशिका में मैं देख रहा हूँ:
-rwxr-xr-x. libmysqlclient_r.so -> libmysqlclient_r.so.16.0.0 lrwxrwxrwx. libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 -rwxr-xr-x. libmysqlclient_r.so.16.0.0 lrwxrwxrwx. libmysqlclient.so -> libmysqlclient.so.16.0.0 lrwxrwxrwx. libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 -rwxr-xr-x. libmysqlclient.so.16.0.0
libmysqlclient_r.so
है libmysqlclient_r.so.16.0.0
पर एक प्रतीकात्मक लिंक, तो ldd
निर्भरता को libmysqlclient_r.so.16
के रूप में क्यों दिखाता है। क्या कोई जादू है जो मैं यहाँ याद कर रहा हूँ?
कई वर्षों से विंडोज़ देव रहा है, मैं gcc
और लिनक्स पर विकास के लिए थोड़ा नया हूं।
मेरा लिनक्स वितरण CentOS 6.0 x86-32bit है।
धन्यवाद है, कि कुछ उपयोगी पॉइंटर्स। – Kev
आपको कोई जानकारी नहीं है, लेकिन मेरी इच्छा है कि मैं इसे और भी ऊपर उठा सकता हूं। मेरा प्रश्न एक पायथन पनीर शॉप पैकेज (MySQL-Python) में उपयोग किए गए 'libmysqlclient_r' को लोड करने में असमर्थ होने से असमर्थ होने से उत्पन्न हुआ है, इसके बावजूद इसे ठीक/ठीक करने के बावजूद। 'LD_DEBUG = libs ldd' मेरा जीवन सुरक्षित था। यह पारदर्शी है कि '/ etc/ld.co.conf.d' में सहेजी गई पथ फ़ाइल '.conf' में समाप्त नहीं हुई है और मेरी'/etc/ld.so.conf' फ़ाइल निर्दिष्ट करती है:' ld.so शामिल करें। conf.d/*। conf'। तो '/ usr/lib/mysql' फ़ोल्डर की खोज कभी नहीं की जा रही थी। – Kev