Osx

如何使用 gcc 在 macOS 中連結 OpenSSL 庫?

  • February 22, 2017

我通過 Homebrew 包管理器安裝了 OpenSSL。我找到了我需要的庫和標頭檔。

標題是:

/usr/local/Cellar/openssl/1.0.2h_1/include/openssl
/usr/local/Cellar/openssl/1.0.2j/include/openssl
/usr/local/Cellar/openssl/1.0.2k/include/openssl

庫文件是:

/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.0.9.8.dylib
/usr/lib/libssl.dylib

我嘗試了幾個gcc命令來嘗試連結 OpenSSL 庫,包括:

gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -lssl
gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -llibssl
gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -llibssl.dylib
gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -llibssl.0.9.8
gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -llibssl.0.9.8.dylib

它們都產生“找不到文件”錯誤或連結器錯誤。

這樣做的正確方法是什麼?

看起來您正在嘗試連結與您的作業系統一起安裝的 openssl 庫,而不是 homebrew 庫。嘗試查找 homebrew 安裝 1.0.2k 庫的位置。

find /usr/local/Cellar/ -name "libssl.*"

您應該找到類似 /usr/local/Cellar/_path_of some_sort/libssl.a 的內容。嘗試連結這個庫而不是 /usr/lib 中的那些。/usr/lib 庫很舊,與您使用的標頭檔不兼容。

gcc md5.c -I/usr/local/Cellar/openssl/1.0.2k/include -L/usr/local/Cellar/path_of_some_sort/ -lssl -lcrypto -o md5

引用自:https://unix.stackexchange.com/questions/346864