के साथ PHP 5.3.0 स्थापित करने में समस्या वर्तमान में मैं कुछ लिनक्स परीक्षण सर्वर पर PHP 5.3.0 स्थापित करने का प्रयास कर रहा हूं। जैसा कि हमने एक्सटी/इंटेल के लिए तत्काल इंतजार किया है, हम जो सुविधाएं प्रदान करते हैं, उन्हें देखना चाहते हैं। मैं configure
सफलतापूर्वक चल रहा हूँ निम्नलिखित तर्कintl-support
./configure
--with-apxs2=/usr/local/apache2/bin/apxs
--prefix=/usr/local/php
--with-zlib-dir=/usr/local/zlib
--with-imap=/.../imap-2006k
--with-imap-ssl
--with-openssl=shared
--with-iconv=shared
--with-zlib=shared
--with-curl=shared
--with-curlwrappers
--enable-exif
--with-ldap=shared,/usr/local/openldap
--with-ldap-sasl
--enable-mbstring=shared
--with-mcrypt
--enable-soap=shared
--enable-sockets
--enable-zip=shared
--enable-pdo=shared
--with-pdo-sqlite=shared
--with-sqlite=shared
--with-mysql=shared,/usr/local/mysql
--with-pdo-mysql=shared,/usr/local/mysql
--with-mysqli=shared,/usr/local/mysql/bin/mysql_config
--with-mhash=shared,/usr/local/mhash
--with-libxml-dir=/usr/local/libxml2
--with-xsl=shared,/usr/local/libxslt
--enable-xmlreader=shared
--enable-xmlwriter=shared
--with-gmp=shared
--with-icu-dir=/usr/local/icu
--enable-intl
आईसीयू 4.2 /usr/local/icu
पर स्थित है और PHP 5.2.9 दोषरहित संकलित साथ (int- और आईसीयू-विकल्प के बिना)। लेकिन जब मैं PHP 5.3.0 स्रोत complie मैं तरह
ext/intl/grapheme/.libs/grapheme_util.o(.text+0xbab):/.../php-5.3.0/ext/intl/grapheme/grapheme_util.c:208: undefined reference to `ubrk_close_4_2'
मैं काफी यकीन है कि यह साझा पुस्तकालयों नहीं मिल के साथ कुछ है कर रहा हूँ की त्रुटि संदेशों में से एक पूरी बहुत कुछ मिलता है।
export LD_LIBRARY_PATH=/usr/local/icu/lib
की सहायता नहीं करता है।
क्या कोई मुझे कुछ समाधान के लिए इंगित कर सकता है? मैं नहीं बल्कि पता कर रहा हूँ - और मैं इन बातों में कोई वास्तविक विशेषज्ञ हूँ ...
संपादित करें:
मैं सिर्फ फिर से जांचा और है कि विभिन्न आईसीयू-पुस्तकालयों और संबंधित सॉफ्ट लिंक सभी कर रहे हैं सुनिश्चित किया /usr/local/icu/lib
में स्थित:
lrwxrwxrwx 1 root root 20 Jul 1 09:56 libicudata.so -> libicudata.so.42.0.1
lrwxrwxrwx 1 root root 20 Jul 1 09:56 libicudata.so.42 -> libicudata.so.42.0.1
-rw-r--r-- 1 root root 16015140 Jul 1 09:56 libicudata.so.42.0.1
lrwxrwxrwx 1 root root 20 Jul 1 09:56 libicui18n.so -> libicui18n.so.42.0.1
lrwxrwxrwx 1 root root 20 Jul 1 09:56 libicui18n.so.42 -> libicui18n.so.42.0.1
-rwxr-xr-x 1 root root 2454770 Jul 1 09:56 libicui18n.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicuio.so -> libicuio.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicuio.so.42 -> libicuio.so.42.0.1
-rwxr-xr-x 1 root root 65299 Jul 1 09:56 libicuio.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicule.so -> libicule.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicule.so.42 -> libicule.so.42.0.1
-rwxr-xr-x 1 root root 356125 Jul 1 09:56 libicule.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libiculx.so -> libiculx.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libiculx.so.42 -> libiculx.so.42.0.1
-rwxr-xr-x 1 root root 75110 Jul 1 09:56 libiculx.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicutu.so -> libicutu.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicutu.so.42 -> libicutu.so.42.0.1
-rwxr-xr-x 1 root root 159330 Jul 1 09:56 libicutu.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicuuc.so -> libicuuc.so.42.0.1
lrwxrwxrwx 1 root root 18 Jul 1 09:56 libicuuc.so.42 -> libicuuc.so.42.0.1
-rwxr-xr-x 1 root root 1660769 Jul 1 09:56 libicuuc.so.42.0.1
make check
रन परीक्षण की टन - उन सभी को सफलतापूर्वक:
[All tests passed successfully...]
Elapsed Time: 00:00:25.000
make[2]: Leaving directory `/.../icu-4.2/source/test/cintltst'
---------------
ALL TESTS SUMMARY:
All tests OK: testdata intltest iotest cintltst
make[1]: Leaving directory `/.../icu-4.2/source/test'
make[1]: Entering directory `/.../icu-4.2/source'
verifying that icu-config --selfcheck can operate
verifying that make -f Makefile.inc selfcheck can operate
PASS: config selfcheck OK
make[1]: Leaving directory `/.../icu-4.2/source'
संपादित करें: के लिए जवाब VolkerK के questions
मैं स्रोत से आईसीयू 4.2 स्थापित किया है और जैसा कि मैंने निर्माण प्रक्रिया ऊपर लिखा था, यूनिट-परीक्षण और स्थापना सब ठीक चला गया। VolkerK की टिप्पणी के बारे में
/usr/local/icu/bin/icu-config --version
4.2.0.1
/usr/local/icu/bin/icu-config --prefix
/usr/local/icu
/usr/local/icu/bin/icu-config --cppflags-searchpath
-I/usr/local/icu/include
/usr/local/icu/bin/icu-config --ldflags --ldflags-icuio
-lpthread -lm -L/usr/local/icu/lib -licui18n -licuuc -licudata -lpthread -lm -licuio
objdump -C /usr/local/icu/lib/libicuuc.so.42.0.1
// doesn't work because of unrecognized argument -C
संपादित करें:
नहीं है, शामिल संकलक का कोई स्विच कर दिया गया है - मैं दोनों प्रक्रियाओं सीधे एक के बाद एक का निर्माण भाग गया। objdump /usr/local/icu/lib/libicuuc.so.42.0.1
काम नहीं करता है या तो, लेकिन मैं
objdump -t /usr/local/icu/lib/libicuuc.so.42.0.1 | grep ubrk_close
00000000000d2484 g F .text 000000000000002d ubrk_close_4_2
चलाने के लिए अगर यह जानकारी मदद कर सकते हैं पता नहीं है में कामयाब रहे। VolkerK के edit1 and edit2 पर
संपादित करें:
मुझे लगता है कि वहाँ रगड़ है - वहाँ वास्तव में है sytem पर एक और आईसीयू-संस्करण; कम से कम भागों में (उदाहरण के लिए कोई अन्य आईसीयू-कॉन्फ़िगर नहीं है; केवल /usr/local/icu/bin
में से एक)।
gcc -lpthread -lm -L/usr/local/icu/lib -licui18n -licuuc -licudata -lpthread -lm -licuio -print-file-name=libicuuc.so
रिटर्न
/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.5/../../../../lib64/libicuuc.so
gcc -lpthread -lm -L/usr/local/icu/lib -licui18n -licuuc -licudata -lpthread -lm -licuio -print-file-name=libicuuc.so.42
रिटर्न
libicuuc.so.42
तो समस्या हो, कैसे निर्माण प्रक्रिया में नए lib-पथ प्राप्त करने के लिए जा रहा है, जबकि ?? वैसे, मैंने आपके उत्तरों से बहुत कुछ सीखा - आप सभी को धन्यवाद।
मैंने आपके सरल परीक्षण कार्यक्रम को संकलित करने का भी प्रयास किया - और यह भी अपरिभाषित संदर्भ त्रुटि के साथ विफल रहता है, संभवतः PHP उसी संकलन के कारण संकलित नहीं होगा।
मैं lib-path में पुरानी आईसीयू-लाइब्रेरी के संदर्भ से कैसे छुटकारा पा सकता हूं या मैं नए आईसीयू-लाइब्रेरी-पथ को प्राथमिकता कैसे दूं?
'ldconfig/usr/local/icu/lib' मदद चल रहा है? –
आईसीयू-कॉन्फ़िगरेशन का आउटपुट सही प्रतीत होता है। दयालु objdump -C काम नहीं करता है। Afaik libicuuc.so को ubrk_close निर्यात करना चाहिए ... शायद आप पैरामीटर के बिना कोशिश कर सकते हैं? बस "objdump /usr/local/icu/lib/libicuuc.so.42.0।1 ", यह प्रदर्शित करना चाहिए कि इस साझा ऑब्जेक्ट द्वारा कौन से प्रतीकों/कार्यों को निर्यात किया गया है। आइए उदाहरण के साथ चिपके रहें: केवल ubrk_close/ubrk_close_4_2 के लिए प्रविष्टियों की प्रतिलिपि बनाएं और पेस्ट करें। बीटीडब्ल्यू: आपने कंपेलरों को स्विच नहीं किया है (या उदाहरण के लिए जीसीसी का प्रमुख संस्करण) आईसीयू और PHP का निर्माण? – VolkerK
वोल्करके की टिप्पणी के बाद प्रश्न संपादित करें। –