मैंने openssl पुस्तकालयों का उपयोग कर सी कोड में निम्न शीर्षलेख फ़ाइलें शामिल की हैं।ओपनेंस संकलन त्रुटि
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#ifdef __VMS
#include <in.h>
#include <inet.h>
#else
#include <netinet/in.h>
#include <arpa/inet.h>
#endif
#include <openssl/crypto.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
तब मैं gcc -o openssl -lssl -lcrypt openssl.c
मेरे कार्यालय में उपयोग करते हुए इस कोड संकलित और ठीक से चलाने लेकिन मेरे घर प्रणाली में (दोनों कार्यालय और Ubuntu 12.04 घर पर में Linux- डेबियन 6) कार्यक्रम संकलित है, यह निम्न त्रुटि दे दी है :
/tmp/ccZcmLk4.o: In function `main':
server.c:(.text+0x3d): undefined reference to `SSL_library_init'
server.c:(.text+0x42): undefined reference to `SSL_load_error_strings'
server.c:(.text+0x47): undefined reference to `SSLv3_method'
server.c:(.text+0x57): undefined reference to `SSL_CTX_new'
server.c:(.text+0x6f): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0x97): undefined reference to `SSL_CTX_use_certificate_file'
server.c:(.text+0xa8): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0xd0): undefined reference to `SSL_CTX_use_PrivateKey_file'
server.c:(.text+0xe1): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0xf9): undefined reference to `SSL_CTX_check_private_key'
server.c:(.text+0x154): undefined reference to `SSL_CTX_load_verify_locations'
server.c:(.text+0x165): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0x18d): undefined reference to `SSL_CTX_set_verify'
server.c:(.text+0x1a1): undefined reference to `SSL_CTX_set_verify_depth'
server.c:(.text+0x397): undefined reference to `SSL_new'
server.c:(.text+0x3c2): undefined reference to `SSL_set_fd'
server.c:(.text+0x3ce): undefined reference to `SSL_accept'
server.c:(.text+0x3e6): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0x3fe): undefined reference to `SSL_get_current_cipher'
server.c:(.text+0x406): undefined reference to `SSL_CIPHER_get_name'
server.c:(.text+0x42e): undefined reference to `SSL_get_peer_certificate'
server.c:(.text+0x455): undefined reference to `X509_get_subject_name'
server.c:(.text+0x46d): undefined reference to `X509_NAME_oneline'
server.c:(.text+0x4b1): undefined reference to `X509_get_issuer_name'
server.c:(.text+0x4c9): undefined reference to `X509_NAME_oneline'
server.c:(.text+0x50d): undefined reference to `X509_free'
server.c:(.text+0x593): undefined reference to `SSL_write'
server.c:(.text+0x5ab): undefined reference to `ERR_print_errors_fp'
server.c:(.text+0x5d3): undefined reference to `SSL_read'
server.c:(.text+0x5eb): undefined reference to `ERR_print_errors_fp'
collect2: ld returned 1 exit status
मैं समझता हूं कि यह मेरे होम पीसी में कुछ पुस्तकालयों की अनुपस्थिति के कारण है। लेकिन क्या कोई मुझे बता सकता है कि मुझे किस पुस्तकालयों को स्थापित करने की आवश्यकता है? अग्रिम में धन्यवाद।
ठीक है, कि काम से पहले फ़ाइल नाम डाल दिया। लेकिन यह एक चेतावनी लौटा जो मुझे कार्यालय में नहीं मिला था। 'server.c: फंक्शन 'मुख्य' में: server.c: 55: 7: चेतावनी: असाइनमेंट पॉइंटर लक्ष्य प्रकार [डिफ़ॉल्ट रूप से सक्षम] से 'कॉन्स्ट' कॉन्फ़िफायर को हटाता है ' मुझे डर है कि मुझे पूरा कोड पेस्ट करना होगा आपको यह दिखाने के लिए कि समस्या कहां है। लेकिन यह निश्चित रूप से कार्यालय में नहीं था। –
@ हरि आप विभिन्न कंपाइलर संस्करणों का उपयोग कर रहे हैं, हाँ? या तो चेतावनियों को सुसंगत बनाने या विभिन्न कंपाइलर आउटपुट में उपयोग करने के लिए संकलन के दौरान झंडे को समायोजित करें। अधिमानतः आपको दोनों स्थानों पर एक ही कंपाइलर संस्करण का उपयोग करना चाहिए। – HonkyTonk
मुझे '-lssl -lcrypto' करना था ('o'!) को एक रहस्यमय 'अनिश्चित संदर्भ से बचने के लिए PEM_read_bio_DHparams' –