Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OS X El Capitan上使用libssl编译C程序?_C_Macos_Gcc_Homebrew_Libssl - Fatal编程技术网

在OS X El Capitan上使用libssl编译C程序?

在OS X El Capitan上使用libssl编译C程序?,c,macos,gcc,homebrew,libssl,C,Macos,Gcc,Homebrew,Libssl,我有一个使用libssl的简单C程序 在Linux上,我安装了openssl开发包,并使用以下行编译了该程序: gcc test_libssl.c -o test_libssl -lcrypto -lssl 现在我想在我的Mac电脑上做同样的事情。同一行导致: fatal error: 'openssl/conf.h' file not found 我通过brew安装openssl 这给了我: … ==>安装openssl ==>下载 curl:(22)请求的URL返回错误:404未找到 我

我有一个使用libssl的简单C程序

在Linux上,我安装了openssl开发包,并使用以下行编译了该程序:

gcc test_libssl.c -o test_libssl -lcrypto -lssl
现在我想在我的Mac电脑上做同样的事情。同一行导致:

fatal error: 'openssl/conf.h' file not found
我通过
brew安装openssl

这给了我:


==>安装openssl
==>下载 curl:(22)请求的URL返回错误:404未找到

我找到了一个没有答案的答案

我也试过了

brew info openssl
并被告知

这个公式只适用于桶。 Mac OS X已经提供了此软件并在中安装了另一个版本 平行线会引起各种各样的麻烦

苹果公司不赞成使用OpenSSL,而是支持自己的TLS和加密库

为了能够在OS X上使用C程序编译libssl,我必须做什么/安装什么

或者,这是一个坏主意的第一位(鉴于上述警告)




更新:

我使用brew安装了openssl。我不确定这是否是问题所在,但我更新了brew。 听从brew的建议

您可能应该更改/usr/local的所有权和权限 返回到您的用户帐户。 sudo chown-R$(whoami):admin/usr/local

并将其考虑在内

然后,按照@Alex Reynolds的建议,我用

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

我在El Capitan(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
您是否尝试将它建议的标志添加到应用程序的构建语句中?您可以编辑应用程序的
makefile
或其他构建语句,并在
brew安装openssl
后添加这些条目。这可能有助于编译器找到并链接所需的库和头文件

看起来一切都在那里。以下是标题:

$ 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

@Alex Reynolds的答案是正确的,但是如果您想编译/配置其他人的程序,那么您可以事先运行:

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

它被弃用是有原因的。。。您应该使用苹果框架(如libcrypto)在应用程序中创建特定于OSX的代码。@macmake libcrypto是OpenSSL的一部分。没有直接等效的本机库;最接近的等价物(不是很接近)是CommonCrypto.yes,将为带有./configure步骤的包添加,我还必须执行:export PKG_CONFIG_PATH=“/usr/local/opt/openssl/lib/pkgconfig”