而OpenSSL ver.0.9.8za已经安装在我的系统(darwin64-x86_64-cc)上,我选择使用UNIX系统的说明在下载的tarball中的“安装”文件中安装最新版本1.0.1j。我选择使用64位选项进行配置,‘./配置darwin64-x86_64-cc',然后运行makefile。到现在为止还好。大约一分钟后,正如我以为安装会成功一样,在编译结束后,编译器会显示以下错误消息:
编译命令行:‘./配置darwin64-x86_64-cc' (Openssl对64位的建议)
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,需要修改什么?
When the automatic configuration route was taken (./config), the following error is given: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更新:“问题”文档建议更改app/Makefile和test/Makefile中的两行:
"LIBCRYPTO= -L.. -lcrypto"
"LIBSSL=-L -lssl"至:
"LIBCRYPTO=../libcrypto.a"
"LIBSSL=../libssl.a"重试制造之后,同样的信息也给出了。
我衷心感谢jww、Jonathan .和其他人的帮助和评论。如果错误持续存在,我将继续搜索丢失的信息,并最终发布解决方案。
发布于 2015-01-03 05:17:39
我不知道你有什么问题。使用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 (压缩)和请求的线程和共享库支持的存在,并指定了一个稍微有点离谱的位置来安装它。(使用--prefix指定的顶级目录存在但为空。)我尝试将sctp添加到配置选项中,但是没有骰子-- SCTP头丢失了,所以我不想再尝试了。
https://stackoverflow.com/questions/27749283
复制相似问题