Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Macos 如何在OS X上指导OpenSSL的生成输出_Macos_Makefile_Openssl - Fatal编程技术网

Macos 如何在OS X上指导OpenSSL的生成输出

Macos 如何在OS X上指导OpenSSL的生成输出,macos,makefile,openssl,Macos,Makefile,Openssl,我正在OS X上构建OpenSSL。我想将构建的库(libcrypto.a,libssl.a等)指向我选择的目录。当前,它们被放在当前工作目录中 我如何做到这一点 这就是我正在做的。我认为为openssldir选项指定目录可以做到这一点,但事实并非如此 ./Configure darwin64-x86_64-cc --openssldir=my-dir make 我想将构建的库(libcrypto.a、libssl.a等)指向我选择的目录。当前,它们被放在当前工作目录中 OpenSSL 1.1

我正在OS X上构建OpenSSL。我想将构建的库(
libcrypto.a
libssl.a
等)指向我选择的目录。当前,它们被放在当前工作目录中

我如何做到这一点

这就是我正在做的。我认为为
openssldir
选项指定目录可以做到这一点,但事实并非如此

./Configure darwin64-x86_64-cc --openssldir=my-dir
make
我想将构建的库(libcrypto.a、libssl.a等)指向我选择的目录。当前,它们被放在当前工作目录中

OpenSSL 1.1.0可以在树内或树外构建。OpenSSL 1.0.2在树中构建。在这两种情况下,所有工件都位于OpenSSL根目录中。它有效地硬编码到脚本中(有两三个脚本相互作用)

通过使用
makeinstall
跟随构建,您可以将它们放在您选择的目录中。如果您只关心库(libcrypto.a、libssl.a),请手动
cp

如果需要,您可以使用以下工具定位工件:

find . -name 'libssl*'
find . -name 'libcrypto*'
find . -name '*\.o'

还有一些关于何时使用
--prefix=XXX
以及何时使用
--openssldir=XXX
的规则。它取决于OpenSSL版本号和制作方法,如
makeinstall
makeinstall\u sw
。有关详细信息,请参阅OpenSSL wiki上的。

如果需要将OpenSSL输出重新定向到特定目录,则需要执行如下配置脚本:

$ ./configure darwin64-x86_64-cc --prefix=/Users/username/mydir --openssldir=/Users/username/mydir/ssl
其中“username”是您的用户名。在本例中,输出将执行到“~/mydir”目录中。在这里:

--prefix option sets the output directory
--openssldir option sets the ssl settings directory

我想除了
--openssldir
之外,您还需要使用
--prefix
选项。对于在OSX上构建的本地OpenSSL,我使用:
CC=gcc./Configure darwin64-x64_64-CC--prefix=/path/to/my/dir--openssldir=/path/to/my/dir
。请注意,
CC=gcc
环境变量对于更新的OpenSSL构建可能需要的
make depend
步骤非常有用。
find-名称“./libssl*”
未列出任何内容。但是,
find-名称“libssl*”
列出了
/libssl.a
/libssl.pc
。同样适用于
libcrypto
@ksl-我的坏。。。我不知道我为什么把它们放在那里。我经常运行这些命令,并且更清楚。。。