2009-12-12 9 views
20

मैं एक जीसीसी कार्यक्रम में openssl का उपयोग करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है। -l विकल्प के साथ कुछ भी करता है के रूप मेंजीसीसी में ओपनएसएसएल का उपयोग कैसे करें?

g++ server.cpp /usr/lib/libssl.a -o server 

एक त्रुटि संदेश देता है। Openssl से लिंक करने के लिए मुझे कमांड लाइन पर क्या टाइप करना चाहिए? फ़ाइल /usr/lib/libssl.a मौजूद है, लेकिन फिर भी मुझे लिंकर त्रुटि no such function MD5() exists मिलती है।

+1

मैं -l का उपयोग नहीं दिख रहा है: -ldl

  • PThread पुस्तकालय POSIX थ्रेडिंग समर्थन उपयोग करने के लिए टी कमांड में आप पोस्ट किया। और अपर केस में अपना प्रश्न पोस्ट न करें - चिल्लाना कठोर है। –

  • +2

    कुछ 'g ++ server.cpp -L/usr/lib -lssl -o सर्वर' जैसे कुछ चाल चलाना चाहिए। आपको जो सटीक त्रुटियां मिल रही हैं उन्हें पोस्ट करें और कोई भी मदद कर सकता है। और मैं चिल्लाने वाली चीज पर दूसरा नील;) –

    +0

    आप '/ usr/lib/libcrypto.a' गायब हैं। 'libcrypto' 'libssl' द्वारा उपयोग किए जाने वाले क्रिप्टो प्रदान करता है। इन दोनों को इस सटीक क्रम में जोड़ें क्योंकि एलडी एक एकल पास पसंद है: '/usr/lib/libssl.a/usr/lib/libcrypto.a'। – jww

    उत्तर

    22

    आप जो सटीक त्रुटियां देख रहे हैं उसे जानने के बिना, एक सटीक समाधान प्रदान करना मुश्किल है। यहां मेरा सबसे अच्छा प्रयास है।

    आपके द्वारा प्रदान की गई जानकारी से, ऐसा लगता है कि लिंकर विफल हो रहा है क्योंकि यह libssl.a में md5 फ़ंक्शन का संदर्भ नहीं ढूंढ सकता है। मेरा मानना ​​है कि यह फ़ंक्शन वास्तव में libcrypto में है, इसलिए आपको इस लाइब्रेरी को भी निर्दिष्ट करने की आवश्यकता हो सकती है।

    g++ server.cpp -L/usr/lib -lssl -lcrypto -o server

    12

    आप या दूसरों इस लेख developerWorks लेख उपयोगी मिल सकता है:

    यह सबसे का वर्णन करता है ओपनएसएसएल और सी/सी ++ के साथ जमीन से उतरने के लिए आपको जो चीजें जानने की जरूरत है। यदि आपको लगता है कि आप अधिकतर चरणों का पालन कर रहे हैं, तो यह आपको यह देखने में सहायता कर सकता है कि क्या करने की आवश्यकता है।

    शुभकामनाएं। जीसीसी सी लिंकर (उपकरण सेटिंग्स से)> सेटिंग्स - - (एल)

    /usr/lib> लाइब्रेरी खोज पथ को जोड़ने के

    +1

    तीन लिंक समान हैं। –

    5

    ग्रहण आईडीई में अपनी प्रोजेक्ट गुण का चयन करें -> C/C++ बिल्ड -lssl -lcrypto

    0

    स्वीकार किए जाते हैं जवाब के शीर्ष पर, मैं एईएस सीसीएम के लिए OpenSSL उदाहरण संकलन नहीं कर सका बनाने:

    https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c

    यह काम मैं दो और बातें जोड़ने के लिए आवश्यक करने के लिए:

    • Dinamic लिंकिंग लाइब्रेरी: -pthread (जोड़ना सीधे -lpthread साथ पुस्तकालय है not recommended)
    संबंधित मुद्दे