2014-01-09 13 views
1

Я использую TextEdit и gcc на OS X 10.7 для создания небольших терминальных программ. Я пытаюсь научиться программировать OpenSSL, но у меня есть компиляция драм (из-за устаревшей проблемы - ниже). Я googled и искал в SO, но все, что я читал, либо до 2011 года (когда возникла проблема), характерной для iOS (я программирую для OS X, но пытаюсь быть независимой от платформы), либо говорит об использовании XCode (которого у меня нет - я предпочитаю TextEdit).OpenSSL с gcc на OS X 10.7

Может ли кто-нибудь указать в правильном направлении простой пошаговый процесс установки программы OpenSSL на OS X с использованием gcc?

Для записи, это точные шаги, я взял: установлен

  • OpenSSL через MacPorts

  • 'OpenSSL версии' возвращает "OpenSSL 1.0.1e 11 фев 2013"

  • Я пытаюсь скомпилировать этот файл: http://saju.net.in/code/misc/openssl_aes.c.txt

  • Я переименовал в 'aes.c', и я использую 'g куб.см -o АЕС 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

Обычно вы избегаете версии OpenSSL от Apple 0.9.8. В нем нет TLS 1.1 и 1.2, ему не хватает полной поддержки EC и т. Д. Чтобы создать OpenSSL в OS X, см. [Компиляция и установка] (https://wiki.openssl.org/index.php/Compilation_and_Installation) в вики OpenSSL , Я написал инструкции OS X, поэтому я знаю, что они работают. – jww

ответ

2

Предупреждения об устаревании - это только предупреждения, и их можно игнорировать. Реальная проблема заключается в том, что компилятор не видит объявления макроса AES_BLOCK_SIZE, который определяется как aes.h. Поэтому вам нужно добавить #include <openssl/aes.h> в исходный код.

Вы также должны указать флаг компоновщика -lcrypto для связи с библиотекой времени исполнения OpenSSL; в противном случае вы получите кучу ошибок «неопределенной ссылки».

+0

Спасибо Адаму - я добавил добавочное дополнение, и теперь программа компилируется. Когда я запускаю его, хотя получаю ошибку сегментации ... но по крайней мере он компилирует ... :) Еще раз спасибо! – user3081739

+0

С этой линией компиляции ** ** не используется версия macports библиотеки ssl, но для нее предоставляется одна. В комплект поставки ОС входит предупреждение об устаревании от – Petesh

+0

Hi Petesh - можете ли вы, пожалуйста, расширить его? Как мне заставить его использовать самый последний? Благодаря! – user3081739

Смежные вопросы