Openssl (OS X Yosemite) 安装出错

Openssl (OS X Yosemite) Installation Make Errors

虽然 OpenSSL 版本。 0.9.8za 已经安装在我的系统上 (darwin64-x86_64-cc),我选择安装最新版本 1.0.1j,使用 UNIX 系统的说明,在下载的 tarball 中的 "INSTALL" 文件中。我选择使用 64 位选项“./Configure darwin64-x86_64-cc”进行配置,然后运行生成文件。到目前为止,一切都很好。大约一分钟后,当我认为安装会成功时,编译器在编译终止后显示以下错误消息:

编译命令行:'./Configure darwin64-x86_64-cc'(64 位的 Openssl 建议)

duplicate symbol _OPENSSL_cleanse in:
../libcrypto.a(mem_clr.o)
../libcrypto.a(x86_64cpuid.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [link_app.] Error 1
make[1]: *** [openssl] Error 2 
make: *** [build_apps] Error 1

问题似乎起源于链接器,但话又说回来,我仍然是命令行新手。
那么,鉴于此错误,需要更改什么才能完全编译 OpenSSL 1.0.1j?
走自动配置路线(./config)时报错如下:

cc -I.. -I../.. -I../modes -I../asn1 -I../evp -I../../include  -DOPENSSL_THREADS -D_REENTRANT
DDSO_DLFCN -DHAVE_DLFCN_H -arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN  
DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m 
DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM 
DGHASH_ASM   -c -o obj_xref.o obj_xref.c
ar  r ../../libcrypto.a o_names.o obj_dat.o obj_lib.o obj_err.o obj_xref.o
ar: ../../libcrypto.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
ar: ../../libcrypto.a: Inappropriate file type or format
make[2]: *** [lib] Error 1
make[1]: *** [subdirs] Error 1
make: *** [build_crypto] Error 1

更新:"PROBLEMS" 文档建议更改 apps/Makefile 和 test/Makefile 中的两行:

"LIBCRYPTO= -L.. -lcrypto"
"LIBSSL=-L -lssl"

至:

"LIBCRYPTO=../libcrypto.a"
"LIBSSL=../libssl.a"

之后重新尝试make,报同样的信息。

衷心感谢 jww、Jonathan L. 等人的帮助和评论 gave/made。如果错误仍然存​​在,我将继续搜索缺失的信息并最终 post 找到解决方案。

我不确定你的问题是什么。在 Yosemite 10.10.1 上使用 XCode 6(我相信是 6.1.1),我能够从 OpenSSL.org 中获取 openssl-1.0.1j 并提取它。然后我配置它:

./Configure --prefix=/usr/openssl/openssl-1.0.1j darwin64-x86_64-cc zlib threads shared

有了这些,我能够毫无问题地构建、测试和安装。这与您所做的非常接近;我只是注意到了 zlib(压缩)的存在并请求了线程和共享库支持——并指定了一个稍微 out-of-the-way 的位置来安装它。 (用 --prefix 指定的 top-level 目录存在但为空。)我尝试将 sctp 添加到配置选项,但没有骰子 - 缺少 SCTP header,所以我懒得再尝试了。