2012-06-16 17 views
5

एक CentOS 5.7 बॉक्स पर, मुझे mysql2 मणि ​​के नवीनतम संस्करण को स्थापित करने में समस्या हो रही है; यह errmsg.h नहीं मिल रहा है:रुबी की है_हेडर विधि हेडर फ़ाइलों के लिए कहां दिखती है?

/usr/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes 
checking for rb_wait_for_single_fd()... no 
checking for mysql_query() in -lmysqlclient... yes 
checking for mysql.h... no 
checking for mysql/mysql.h... yes 
checking for errmsg.h... no 
----- 
errmsg.h is missing. please check your installation of mysql and try again. 
----- 
*** extconf.rb failed *** 

mysql हेडर फाइल/usr/शामिल/mysql पर मौजूद हैं। सर्वर पर मणि का एक पुराना संस्करण मौजूद है, इसलिए इसे एक बिंदु पर सफलतापूर्वक बनाया जाना चाहिए।

ध्यान दें कि यह mysql.h के लिए चेक पर विफल रहता है, लेकिन mysql/mysql.h पर सफल होता है। हालांकि, यह errmsg.h के लिए इसे दोहराना नहीं है। इसके द्वारा मैं अनुमान लगा रहा हूं कि यह/usr/शामिल नहीं है, लेकिन मुझे यकीन नहीं है।

मैंने extconf.rb स्रोत कोड में खोला है और पाया है कि यह हेडर फ़ाइलों का पता लगाने के लिए have_header विधि का उपयोग कर रहा है। मैंने निष्पादन को डीबग किया कि यह पता लगाने के लिए कि यह "mysql/errmsg.h" के सापेक्ष पथ की तलाश में है। लेकिन मुझे कोई दस्तावेज नहीं मिला है जो बताता है कि यह एक पूर्ण पथ में कैसे फैलता है।

जहां & हैडरहेडर अपनी शीर्षलेख फ़ाइलों को कैसे ढूंढता है?

+1

Fwiw, मैं शामिल करके वास्तविक समस्या को नजरअंदाज कर '--with-mysql-शामिल =/usr/gem instal कमांड में/mysql' शामिल करें। हालांकि इस सवाल का जवाब देना अभी भी अच्छा होगा। –

उत्तर

12

मुझे विश्वास है कि मुझे एक जवाब मिला है।

ऐसा प्रतीत होता है कि have_header सिस्टम में पथ को शामिल करता है। यदि प्रासंगिक वातावरण चर सेट नहीं हैं, तो डिफ़ॉल्ट शामिल पथ /usr/local/include और /usr/include हैं।

export C_INCLUDE_PATH=/usr/include/mysql/ 

यही सच है आप, एक सी ++ प्रोग्राम संकलित कर रहे हैं, भले ही यदि हेडर फाइल एक सी फ़ाइल है:

आप उन्हें मैन्युअल रूप में स्थापित करना चाहते हैं, तो आप की तरह कुछ करना होगा। अगर, दूसरे हाथ पर, अपने हेडर फाइल सी ++, नहीं सी है, तो आप करना होगा:

export CPLUS_INCLUDE_PATH=/usr/include/mysql 
बेशक

, आप पाया काम के आसपास है, जो आपके extconf.rb में dir_config('mysql') शामिल करने के लिए है। इससे आपको --with-mysql-include विकल्प का उपयोग करने और मैन्युअल रूप से पथ की आपूर्ति करने में सक्षम बनाता है।

यहाँ मेरी स्रोत है: http://www.network-theory.co.uk/docs/gccintro/gccintro_23.html

और यहाँ (जवाब के साथ) एक ही सवाल की एक अधिक सामान्य संस्करण है: How to add a default include path for gcc in linux?

+1

नोट: मैंने हाल ही में पाया है कि 'dir_config' केवल असंगत रूप से काम करता है। यह mysql के साथ काम कर सकता है, लेकिन कुछ कारणों से एटीएलएएस के साथ नहीं है। –

+0

धन्यवाद, इससे मुझे बहुत मदद मिली –