2016-10-03 176 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這樣的三元組,在後面的過程中會被拒絕。