2013-11-07 4 views
1

Так что я пытался скомпилировать код, который имеет функцию SHA1 .. Я включил следующий заголовок:«SHA1» устарел: первый раз устарел в OS X 10.7?

#include <openssl/sha.h> 

И я получил следующее сообщение об ошибке при компиляции:

test.c:9:5: error: 'SHA1' is deprecated: first deprecated in OS X 10.7 
    [-Werror,-Wdeprecated-declarations] 
SHA1(msg, strlen(msg), hs); 
^ 

Но человек страницы еще описания для этой функции.

Может ли кто-нибудь предложить любой другой заголовок для аналогичной функции (MD5 или SHA1)?

PS - также мне нужно связать любые библиотеки при компиляции с использованием gcc?

+0

Вы все еще можете использовать его. Устаревший не означает, что он недоступен. Это рекомендация использовать другой алгоритм хэширования. Вам нужно связать с libcrypto - добавить '-lcrypto' в библиотеки, на которые нужно ссылаться. – Petesh

ответ

2

Вы все еще можете использовать его. Устаревший не означает, что он недоступен. Это рекомендация использовать другой алгоритм хэширования. Вам необходимо установить ссылку на libcrypto - добавить -lcrypto в библиотеки, на которые нужно ссылаться.

Если вы используете больше openssl, вам также понадобится ссылка в libssl, используя -lssl.

так, например, если ваш тестовый код test.c, вы могли бы сделать:

gcc -o test test.c -lcrypto -lssl 
+0

Итак, как бы выглядела моя команда gcc? мне нужно связать как lssl, так и lcrypto? – sukhvir

+0

Вам нужно всего лишь связать оба варианта, если вы используете специфические функции openssl. Если вы разрабатываете приложение только для Mac, я бы рекомендовал использовать [Common Crypto] (https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/Common%20Crypto.3cc .html # // apple_ref/doc/man/3cc/CommonCrypto), но если вы просто создаете образец кода, тогда нормально продолжать использовать openssl. – Petesh

+0

большое спасибо ... – sukhvir

1

Apple, возражали OpenSSL, но не волнуйтесь, OpenSSL огромный проект, и не собирается уходить в любое время скоро.

Вы можете отключить устаревшую ошибку, добавив -Wno-error=deprecated-declarations в свою командную строку. Это будет содержать предупреждения (что полезно, потому что это может помочь вам поймать другие устаревшие объявления), не вызывая ошибки.

Там какая-то дискуссия о том, почему это происходит на этом посту: Why is Apple Deprecating OpenSSL in MacOS 10.7 (Lion)?

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