2014-04-02 7 views
5

मैंने gmp-6.0.0a.tar.xz फ़ाइल डाउनलोड की और usr/local निर्देशिका में अनजिप (टैर) डाउनलोड की। जैसा कि लोगों ने कहा, मैंने ./configure, make, make check और sudo make installgmp-6.0.0 निर्देशिका में टाइप किया। इंस्टॉल करना ठीक लग रहा था। लेकिन जब मैं इसgmp.h फ़ाइल को एक्सकोड में त्रुटि नहीं मिली, मैक

#include <stdio.h> 
#include <gmp.h> 
#include <gmpxx.h> 


int main(int argc, const char * argv[]) 
{ 

    // insert code here... 
    printf("Hello, World!\n"); 
    return 0; 
} 

तरह का परीक्षण करने की कोशिश की यह है कि त्रुटि gmp.h फ़ाइल नहीं मिली। मैंने -lgmp को अन्य लिंकर ध्वज में जोड़ा लेकिन काम नहीं करता।

मुझे नहीं पता कि इस तरह की समस्या से कैसे निपटें। क्या कोई मदद कर सकता है?


धन्यवाद डायट्रिच एपीपी। अब मुझे gmp.h फ़ाइल नहीं मिली है, लेकिन में मुझे कोई gmpxx.h फ़ाइल नहीं मिली है। मुझे नहीं पता क्यों ..

कोई सुझाव ???

उत्तर

5

सी ++ समर्थन नहीं जब जीएमपी को विन्यस्त डिफ़ॉल्ट रूप से सक्षम है। libgmpxx.a पुस्तकालयों

सुनिश्चित नहीं हैं कि अगर नवीनतम जीएमपी C++ कम्पाइलर के लिए बजना ऊपर उठाता है यह भी gmpxx.h हैडर स्थापित हो जाएगा, और libgmpxx.dylib और/या - ./configure --prefix=/usr/local --enable-cxx: पैकेज Untar, और साथ कॉन्फ़िगर करें। आप मैन्युअल रूप से पर्यावरण चर सेट कर सकते हैं, उदाहरण के लिए, CC=clang (सी 99 डिफ़ॉल्ट), और: CXX=clang++ -std=c++11 -stdlib=libc++ (सी ++ 11 बोली - लिंकर को सी ++ 11 विकल्प भी पास करता है)। फिर, यह अनावश्यक हो सकता है।

आपका परीक्षण, क्योंकि इसमें सी ++ शामिल है, को सी ++ एप्लिकेशन के रूप में बनाया जाना चाहिए। इसके अलावा, libgmpxx.dylib ही libgmp.dylib से जुड़ा हुआ है, एक साधारण सी ++ परीक्षण कार्यक्रम के लिए तो:

$CXX -I/usr/local/include gmptest.cc -o gmptest -L/usr/local/lib -lgmpxx 

पर्याप्त होना चाहिए।

यह DYLD_LIBRARY_PATH चर को /usr/local/lib पहले जोड़ें करने के लिए करता है, तो अन्य प्रणाली जीएमपी पुस्तकालय प्रतिष्ठानों पहले उपयोग किया जाता है, जब तक आप लिंकर -rpath विकल्प के साथ पुस्तकालय को हार्डकोड आवश्यक हो सकता है। लेकिन यह चिंता करने के लिए कुछ है कि समस्या कब उत्पन्न होती है।

+0

यह काम करता है !! आपका बहुत बहुत धन्यवाद। दो जवाब बहुत आभारी हैं। मुझे नहीं पता कि मुझे कौन सा स्वीकार करना चाहिए। – Q123

5

सबसे पहले, आपको /usr/local में इसे अलग नहीं करना चाहिए। इसे अपनी होम निर्देशिका में कहीं भी अनदेखा करें (इससे कोई फर्क नहीं पड़ता), फिर ./configure; make; make check; sudo make install

आपकी समस्या संकलक द्वारा /usr/local/include खोज नहीं कर सकती है।

  1. जांचें कि /usr/local/include/gmp.h मौजूद है। यदि यह अस्तित्व में नहीं है, तो जीएमपी गलत तरीके से स्थापित है (या किसी दूसरे स्थान पर स्थापित)।

  2. अपने कंपाइलर झंडे में -I/usr/local/include जोड़ें। एक्सकोड में, यह प्रोजेक्ट सेटिंग्स (या उस तरह की कुछ सेटिंग) में "अतिरिक्त शीर्षलेख खोज पथ" में /usr/local/include जोड़कर किया जाता है।

+0

आपके उत्तर के लिए धन्यवाद।अब तक यह काम करता है। हालांकि, क्योंकि मैं '# शामिल 'जोड़ना चाहता हूं, यह भी वही समस्या है जो' gmpxx.h' फ़ाइल नहीं मिली है। – Q123

संबंधित मुद्दे