2015-11-04 9 views
14

मेरे पास libssl का उपयोग कर एक सरल सी प्रोग्राम है।ओएस एक्स एल कैपिटन पर libssl का उपयोग कर सी प्रोग्राम संकलित?

लिनक्स पर, मैं openssl-देव पैकेज स्थापित किया है और निम्न पंक्ति के साथ कार्यक्रम संकलित:

gcc test_libssl.c -o test_libssl -lcrypto -lssl 

अब मैं अपने Mac पर भी ऐसा ही करना चाहते हैं। एक ही पंक्ति परिणामस्वरूप में:

fatal error: 'openssl/conf.h' file not found 

मैं brew install openssl

के माध्यम से घर-काढ़ा साथ openssl (openssl-देव काम नहीं किया) को स्थापित करने की कोशिश की यह मुझे दिया:

...
==> Installing openssl
==> Downloading https://www.openssl.org/source/openssl-1.0.2a.tar.gz curl: (22) The requested URL returned error: 404 Not Found

मैं एक related SO question पाया बिना जवाब के।

मैं भी

brew info openssl 

की कोशिश की और बताया गया

This formula is keg-only. Mac OS X already provides this software and installing another version in parallel can cause all kinds of trouble.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

मैं क्या/स्थापित करने के लिए क्या है इसी क्रम में ओएस एक्स पर libssl का इस्तेमाल करने वाली सी कार्यक्रमों कार्यक्रमों संकलित करने के लिए सक्षम होने के लिए?

या, क्या यह एक बुरा विचार है (ऊपर चेतावनी दी गई है)?




अद्यतन:

मैं openssl मिला काढ़ा का उपयोग कर स्थापित किया। मुझे यकीन नहीं है कि यह समस्या थी, लेकिन मैंने ब्रू अपडेट किया। खाते में काढ़ा की सलाह

You should probably change the ownership and permissions of /usr/local back to your user account. sudo chown -R $(whoami):admin /usr/local

और this मुद्दा उठाते हुए।

फिर, @Alex रेनॉल्ड्स की सलाह के बाद, मैं इसे सफलतापूर्वक संकलित

gcc test_libssl.c -o test_libssl -lssl -lcrypto -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include 
+0

यह एक कारण के लिए पदावनत है ... आपको अपने एप्लिकेशन में OSX विशिष्ट कोड बनाना चाहिए, का उपयोग कर एप्पल चौखटे (libcrypto की तरह) .. । – Macmade

+1

@Macmade libcrypto ओपनएसएसएल का हिस्सा है। कोई प्रत्यक्ष समकक्ष मूल पुस्तकालय नहीं है; निकटतम समतुल्य (जो बहुत नजदीकी नहीं है) कॉमनक्रिप्टो है। – duskwuff

उत्तर

11

मैं Homebrew एल कैप्टन पर स्थापित किया है (10.11.1) के साथ और कोई स्पष्ट बीमार प्रभाव के साथ OpenSSL के ऐसे वर्तमान संस्करण स्थापित किया है:

$ uname -a 
Darwin hostname.local 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64 

$ brew info openssl 
openssl: stable 1.0.2d (bottled) 
OpenSSL SSL/TLS cryptography library 
https://openssl.org/ 

This formula is keg-only. 
Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries 

/usr/local/Cellar/openssl/1.0.2d_1 (464 files, 17M) 
    Built from source 
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/openssl.rb 
==> Dependencies 
Build: makedepend ✔ 
==> Options 
--universal 
    Build a universal binary 
--without-check 
    Skip build-time tests (not recommended) 
==> Caveats 
A CA file has been bootstrapped using certificates from the system 
keychain. To add additional certificates, place .pem files in 
    /usr/local/etc/openssl/certs 

and run 
    /usr/local/opt/openssl/bin/c_rehash 

This formula is keg-only, which means it was not symlinked into /usr/local. 

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries 

Generally there are no consequences of this for you. If you build your 
own software and it requires this formula, you'll need to add to your 
build variables: 

    LDFLAGS: -L/usr/local/opt/openssl/lib 
    CPPFLAGS: -I/usr/local/opt/openssl/include 

क्या आपने अपने ऐप के निर्माण कथन के बारे में बताए गए झंडे को जोड़ने का प्रयास किया है? आप brew install openssl के बाद अपने ऐप के makefile या अन्य बिल्ड स्टेटमेंट को संपादित कर सकते हैं और उन प्रविष्टियों को जोड़ सकते हैं। यह आपके कंपाइलर को लाइब्रेरी और हेडर फ़ाइलों को ढूंढने और लिंक करने में मदद कर सकता है।

ऐसा लगता है कि सबकुछ वहां है।

$ ls -al /usr/local/opt/openssl/include/openssl/ 
total 3688 
drwxr-xr-x 77 alexpreynolds admin 2618 Aug 24 13:46 . 
drwxr-xr-x 3 alexpreynolds admin  102 Aug 24 13:46 .. 
-rw-r--r-- 1 alexpreynolds admin 6182 Aug 24 13:46 aes.h 
-rw-r--r-- 1 alexpreynolds admin 63142 Aug 24 13:46 asn1.h 
-rw-r--r-- 1 alexpreynolds admin 24435 Aug 24 13:46 asn1_mac.h 
-rw-r--r-- 1 alexpreynolds admin 34475 Aug 24 13:46 asn1t.h 
-rw-r--r-- 1 alexpreynolds admin 38566 Aug 24 13:46 bio.h 
-rw-r--r-- 1 alexpreynolds admin 5351 Aug 24 13:46 blowfish.h 
... 

और स्थिर और गतिशील पुस्तकालयों:: यहाँ हेडर हैं

$ ls -al /usr/local/opt/openssl/lib 
total 11664 
drwxr-xr-x 10 alexpreynolds admin  340 Aug 24 13:46 . 
drwxr-xr-x 11 alexpreynolds admin  374 Aug 24 13:46 .. 
drwxr-xr-x 14 alexpreynolds admin  476 Aug 24 13:46 engines 
-r--r--r-- 1 alexpreynolds admin 1861780 Aug 24 13:46 libcrypto.1.0.0.dylib 
-r--r--r-- 1 alexpreynolds admin 3206344 Aug 24 13:46 libcrypto.a 
lrwxr-xr-x 1 alexpreynolds admin  21 Aug 24 13:46 libcrypto.dylib -> libcrypto.1.0.0.dylib 
-r--r--r-- 1 alexpreynolds admin 364144 Aug 24 13:46 libssl.1.0.0.dylib 
-r--r--r-- 1 alexpreynolds admin 524424 Aug 24 13:46 libssl.a 
lrwxr-xr-x 1 alexpreynolds admin  18 Aug 24 13:46 libssl.dylib -> libssl.1.0.0.dylib 
drwxr-xr-x 5 alexpreynolds admin  170 Aug 24 13:46 pkgconfig 
संबंधित मुद्दे