2014-01-09 5 views
1

OS X 10.7에서 TextEdit 및 gcc를 사용하여 소형 터미널 프로그램을 만듭니다. 나는 OpenSSL을 프로그래밍하는 법을 배우려고 노력하고 있지만, (나는 더 이상 사용하지 않는 문제로 인해) 드라마를 컴파일하고있다. 내가 봤 거든 그래서 SO를 읽었지만, 2011 이전 (문제가 나타 났을 때), iOS (OS X 용 프로그래밍이지만 플랫폼 독립적이 되려고 함) 또는 Xcode 사용에 대한 대화 나는 그렇지 않습니다 - 나는 TextEdit을 선호합니다).OS X 10.7에서 gcc를 사용하는 OpenSSL

누구든지 gcc를 사용하여 OS X에 OpenSSL 프로그램을 설치하는 방법에 대한 간단한 단계별 절차의 올바른 방향을 지적 할 수 있습니까? 기록을 위해

, 이것은 내가 촬영 한 정확한 단계입니다 :

  • 은 OpenSSL은 MacPorts를

  • '하려면 openssl 버전'을 통해 설치 "2013은 OpenSSL 1.0.1e 2월 11일을"

  • 반환
  • 이 파일을 컴파일하려고합니다 : http://saju.net.in/code/misc/openssl_aes.c.txt

  • 'aes.c'로 이름이 바뀌었고 'g CC -o AES aes.c '나는 (어떤 결과에 대한) 다음 플래그 시도했습니다

  • : -lcrypto, lssl, -Wno 오류 = 사용되지-선언

특정 출력 I을 gcc에서 가져 오기는 다음과 같습니다.

Brads-MacBook-Air:Desktop brad$ gcc -o aes aes.c -lssl -lcrypto -Wno-error=deprecated-declarations 
aes.c: In function ‘aes_init’: 
aes.c:30: warning: ‘EVP_BytesToKey’ is deprecated (declared at /usr/include/openssl/evp.h:572) 
aes.c:30: warning: ‘EVP_aes_256_cbc’ is deprecated (declared at /usr/include/openssl/evp.h:786) 
aes.c:30: warning: ‘EVP_sha1’ is deprecated (declared at /usr/include/openssl/evp.h:666) 
aes.c:36: warning: ‘EVP_CIPHER_CTX_init’ is deprecated (declared at /usr/include/openssl/evp.h:636) 
aes.c:37: warning: ‘EVP_EncryptInit_ex’ is deprecated (declared at /usr/include/openssl/evp.h:581) 
aes.c:37: warning: ‘EVP_aes_256_cbc’ is deprecated (declared at /usr/include/openssl/evp.h:786) 
aes.c:38: warning: ‘EVP_CIPHER_CTX_init’ is deprecated (declared at /usr/include/openssl/evp.h:636) 
aes.c:39: warning: ‘EVP_DecryptInit_ex’ is deprecated (declared at /usr/include/openssl/evp.h:590) 
aes.c:39: warning: ‘EVP_aes_256_cbc’ is deprecated (declared at /usr/include/openssl/evp.h:786) 
aes.c: In function ‘aes_encrypt’: 
aes.c:51: error: ‘AES_BLOCK_SIZE’ undeclared (first use in this function) 
aes.c:51: error: (Each undeclared identifier is reported only once 
aes.c:51: error: for each function it appears in.) 
aes.c:55: warning: ‘EVP_EncryptInit_ex’ is deprecated (declared at /usr/include/openssl/evp.h:581) 
aes.c:59: warning: ‘EVP_EncryptUpdate’ is deprecated (declared at /usr/include/openssl/evp.h:583) 
aes.c:62: warning: ‘EVP_EncryptFinal_ex’ is deprecated (declared at /usr/include/openssl/evp.h:584) 
aes.c: In function ‘aes_decrypt’: 
aes.c:75: error: ‘AES_BLOCK_SIZE’ undeclared (first use in this function) 
aes.c:77: warning: ‘EVP_DecryptInit_ex’ is deprecated (declared at /usr/include/openssl/evp.h:590) 
aes.c:78: warning: ‘EVP_DecryptUpdate’ is deprecated (declared at /usr/include/openssl/evp.h:592) 
aes.c:79: warning: ‘EVP_DecryptFinal_ex’ is deprecated (declared at /usr/include/openssl/evp.h:594) 
aes.c: In function ‘main’: 
aes.c:136: warning: ‘EVP_CIPHER_CTX_cleanup’ is deprecated (declared at /usr/include/openssl/evp.h:637) 
aes.c:137: warning: ‘EVP_CIPHER_CTX_cleanup’ is deprecated (declared at /usr/include/openssl/evp.h:637) 
+0

일반적으로 Apple의 0.9.8 버전의 OpenSSL은 사용하지 마십시오. TLS 1.1과 1.2는 없지만 EC 등의 완전한 지원이 부족합니다. OS X에서 OpenSSL을 빌드하려면 OpenSSL wiki의 [컴파일 및 설치] (https://wiki.openssl.org/index.php/Compilation_and_Installation)를 참조하십시오. . 필자는 OS X 명령어를 작성하여 작동한다는 것을 알고 있습니다. – jww

답변

2

경고 메시지는 단지 경고이며 무시할 수 있습니다. 실제 문제는 컴파일러가 AES_BLOCK_SIZE 매크로의 선언을 볼 수 없다는 것입니다. 매크로는 aes.h으로 정의됩니다. 따라서 소스 코드에 #include <openssl/aes.h>을 추가해야합니다.

또한 OpenSSL 런타임 라이브러리와 연결하려면 -lcrypto 링커 플래그를 포함해야합니다. 그렇지 않으면 많은 "정의되지 않은 참조"오류가 발생합니다.

+0

감사합니다. Adam - 추가 프로그램을 추가 했으므로 이제 프로그램이 컴파일됩니다. 내가 segmentation fault를 얻었지만 실행할 때 ... 적어도 컴파일은 ... :) 다시 한번 감사드립니다! – user3081739

+0

해당 컴파일 라인을 사용하면 ** ssl 라이브러리의 macports 버전을 사용하지 않고 ** OS가 제공합니다. OS가 제공 한 것은 deprecation 경고가 – Petesh

+0

에서 오는 곳입니다. 안녕하세요 Petesh - 확대 해 주시겠습니까? 최신 버전을 사용하려면 어떻게합니까? 감사! – user3081739

관련 문제