से लिंक करना मैंने स्रोत से ओपनएसएसएल बनाया है (एक जानबूझकर पुराना संस्करण; ./config && make && make test
के साथ बनाया गया है) और मेरे प्रोग्राम के खिलाफ लिंक करने के लिए make install
किए बिना मैंने जो भी बनाया है उसका उपयोग करना पसंद करेंगे।ओपनएसएसएल पुस्तकालयों को एक प्रोग्राम
आदेश में नाकाम रहने वाली है:
gcc -Wall -Wextra -Werror -static -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto
-Iopenssl/openssl-0.9.8k/include -o myApp source1.o source2.o common.o`
और मैं करने के लिए इसी तरह की त्रुटियों की एक श्रृंखला प्राप्त करते हैं:
common.c:(.text+0x1ea): undefined reference to `SSL_write'
यह मैं लगता है कि मेरी OpenSSL के साथ कुछ अजीब है बनाता है।
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
मैं OpenSSL गलत तरीके से संकलन कर रहा हूँ: अगर मैं अपने आदेश से -Lopenssl/openssl-0.9.8k/
छोड़ देते हैं, त्रुटि करने में असमर्थ होने के लिए बदल जाता है? या मुझे इसे कैसे हल करना चाहिए?
यह '-lssl -lcrypto' है जो अंत में होने की आवश्यकता है। जब लिंकर द्वारा लाइब्रेरी स्कैन की जाती है, तो केवल वे फ़ंक्शंस जिनके लिए पहले से ही अनिर्धारित संदर्भ हैं, लिंक किए गए हैं। तो आपको लिंक लाइन की शुरुआत में "खपत" वस्तुओं को और अंत में "आपूर्ति" वस्तुओं को रखने की आवश्यकता है। – caf
मैं हमेशा अपने उत्तरों को स्वीकार करने के बारे में अजीब हूं। हालांकि मैं इसे अभी स्विच कर दूंगा। – mrduclaw
कबीले llvm के लिए यह कैसे भिन्न है? – saruftw