2016-10-03 179 views
0

我正在OS X上构建OpenSSL。我想了解更多关于修改构建设置的信息,如Wiki中所述。如何在OS X上使用gcc或clang构建OpenSSL

我配置构建如下:

./Configure darwin64-x86_64-cc 
make 

我怎么知道这是要使用的编译器?

Wiki有一个示例,指示如何修改构建以在iOS 7.0 SDK下使用clang编译器而不是gcc。

我想修改我的体型来选择一个或OS X.在配置相当的线是其他铛或GCC的:

"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$x86_64_asm;$asm=~s/rc4\-[^:]+//;$asm}.":macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 

我需要做什么改变吗?

回答

0

我怎么知道这个编译器会使用哪个?

在现代的OS X,你通常得到锵的一个味或其他:

$ g++ --version 
Configured with: --prefix=/Applications/Xcode-5_1.app/Contents/Developer/usr 
--with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin12.6.0 

甚至:

$ c++ --version 
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin12.6.0 

苹果锵5.1 LLVM锵3.4。预处理器宏__clang__,__clang_major____clang_minor__是Apple和LLVM中的不同值。当你在Clang bug中工作时,这是一种真正的痛苦。您可能还需要检测铿锵集成的汇编程序,它带来了自己的一组破坏性错误。


我想修改我的体型,选择一个或其他在OS X或铿锵的gcc ...

可以互换,在您选择的编译器,但您需要使用config而不是Configure。下面是MacPort的GCC 6.0编译器。 BREW是可能类似(但我不使用它):

$ /opt/local/bin/gcc-mp-6 --version 
gcc-mp-6 (MacPorts gcc6 6.1.0_0) 6.1.0 
Copyright (C) 2016 Free Software Foundation, Inc. 

$ CC=/opt/local/bin/gcc-mp-6 KERNEL_BITS=64 ./config 
Operating system: i686-apple-darwinDarwin Kernel Version 12.6.0: Wed Mar 18 16:23:48 PDT 2015; 
root:xnu-2050.48.19~1/RELEASE_X86_64 
Configuring for darwin64-x86_64-cc 
    no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) 
    no-gmp   [default] OPENSSL_NO_GMP (skip dir) 
    no-jpake  [experimental] OPENSSL_NO_JPAKE (skip dir) 
    no-krb5   [krb5-flavor not specified] OPENSSL_NO_KRB5 
    no-libunbound [experimental] OPENSSL_NO_LIBUNBOUND (skip dir) 
    no-md2   [default] OPENSSL_NO_MD2 (skip dir) 
    no-rc5   [default] OPENSSL_NO_RC5 (skip dir) 
    no-rfc3779  [default] OPENSSL_NO_RFC3779 (skip dir) 
    no-sctp   [default] OPENSSL_NO_SCTP (skip dir) 
    no-shared  [default] 
    no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) 
    no-ssl2   [default] OPENSSL_NO_SSL2 (skip dir) 
    no-store  [experimental] OPENSSL_NO_STORE (skip dir) 
    no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) 
    no-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir) 
    no-zlib   [default] 
    no-zlib-dynamic [default] 
IsMK1MF=0 
CC   =/opt/local/bin/gcc-mp-6 
... 

我需要做什么改变吗?

更改您配置的方式。使用config而不是Configure。也可以使用real GCC编译器,并且不要使用由符号链接创建的假模拟。

还有一个关于配置无法进行配置时出现错误报告的问题CC=/opt/local/bin/gcc ./Configure ...您会得到一个像linux-x86_64-/opt/local/bin/gcc这样的三元组,在后面的过程中会被拒绝。