2017-09-14 14 views
0

Mac OSXバージョン10.12.6でlibcurlをビルドすることに重大なトラブルがあります。MacOSX上でlibcurlを32ビットサポートとカスタムOpenSSLバージョンで構築する

32ビットアーキテクチャをサポートするOpenSSL(1.0.2c)の特定のバージョンにリンクされた特定のバージョンの静的ライブラリ(7.40.0)が必要です。

私は正しいパラメータ公式サイト上のソースコードを発見した、と私には思えたして設定スクリプトを実行しました:

curl-7.40.0> CPPFLAGS="-I/Users/me/Documents/Projects/3rdparty/openssl/MacOSX/openssl-1.0.2c/include/" 
LDFLAGS="-L/Users/Documents/Projects/3rdparty/openssl/MacOSX/openssl-1.0.2c/" 
./configure --disable-shared --build=i386-darwin --with-ssl 

  • CPPFLAGSは、OpenSSLのフォルダを指定しますヘッダー。
  • LDFLAGSは、OpenSSLライブラリのフォルダを指定します(libssl.alibcrypto.a)。
  • --disable-sharedは、ダイナミックライブラリのビルドを無効にします(libcurl.dylib出力はありません)。
  • --build=i386-darwinは、Apple 32ビットターゲットアーキテクチャのビルドを構成します。
  • --with-sslはSSLオプションを有効にします。

ただし、この呼び出しは、二つの理由で失敗した:

  1. また、configureの出力に見て、私は「host system typeが」ターゲットとして、i386-darwinに設定されていることを読みました。私はそれを指定することによってこれを解決することができます--host=x86_64-darwin;

    configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more. 
    configure: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this. 
    
  2. もちろん

私は--with-darwinsslを指定することでこの問題に対処することができますが、私が行うとき、私は次の警告を得る:

  • 私は、SSLが実際に有効になっていないことを得る

    ld: warning: directory not found for option '-L/Users/me/Documents/Projects/3rdparty/openssl/MacOSX/openssl-1.0.2c' 
    

    をそして私がリンクしようとしているOpenSSLライブラリは無視されます。私はSSLのためCFLAGSLDFLAGSを削除しよう

    最後に、(ちょうど最も単純なコール作品かどうかを確認するには):私が行うと

    ./configure --build=i386-darwin --disable-shared --with-darwinssl 
    

    configuremakeスクリプトがうまく終了します。私は、サンプルソースコード内のcurlヘッダ含めるしようとした場合:

    #import <Foundation/Foundation.h> 
    #include "curl/curl.h" 
    

    をし、XCodeのヘッダ検索パスにcurl-7.40.0/includeディレクトリを指定して、私は意味的な問題を得る:

    curl-7.40.0/include/curl/curlrules.h:143:6: '__curl_rule_01__' declared as an array with a negative size 
    curl-7.40.0/include/curl/curlrules.h:153:6: '__curl_rule_02__' declared as an array with a negative size 
    

    私は問題がhereを説明しました。私が行ってcurlbuild.h#defineをチェックすると、CURL_SIZEOF_LONGが8であることがわかりますが、明確に定義されています。このプロジェクトはArchitecture i386でコンパイルされています。最後に

    、私も多くの物事を単純化し、不可知論を実行しようとした場合:

    ./configure --disable-shared --with-darwinssl 
    

    と私は奇妙なエラーの束を取得リンクする際に、バックユニバーサルに32/64ビットをサンプルプロジェクトのアーキテクチャを切り替えます:

    "_ber_free", referenced from: 
    "_inflate", referenced from: 
    "_inflateEnd", referenced from: 
    "_inflateInit2_", referenced from: 
    "_inflateInit_", referenced from: 
    "_ldap_err2string", referenced from: 
    "_ldap_first_attribute", referenced from: 
    "_ldap_first_entry", referenced from: 
    "_ldap_free_urldesc", referenced from: 
    "_ldap_get_dn", referenced from: 
    "_ldap_get_values_len", referenced from: 
    "_ldap_init", referenced from: 
    "_ldap_memfree", referenced from: 
    "_ldap_msgfree", referenced from: 
    "_ldap_next_attribute", referenced from: 
    "_ldap_next_entry", referenced from: 
    "_ldap_search_s", referenced from: 
    "_ldap_set_option", referenced from: 
    "_ldap_simple_bind_s", referenced from: 
    "_ldap_unbind_s", referenced from: 
    "_ldap_url_parse", referenced from: 
    "_ldap_value_free_len", referenced from: 
    "_zlibVersion", referenced from: 
    

    私は多分、ここに明白な何かを見逃しているか、道に沿って多くの小さなレンガが欠けています。いずれにせよ、私は完全に失われています。私の仕事が実際に実現可能かどうかは疑問です。

    私は64ビットでアプリケーション全体を「再コンパイル」こともできますが、私もサンプルアプリケーションはにはポイントがありません軌道に乗ることができない場合、私はおそらくこのlibcurlのバージョンとOpenSSLのそのバージョンを必要とし、実際のものに切り替える(なぜこの設定が必要なのか不思議であれば、my other thread about libcurl problemsにチェックしてください:Windowsクライアントは接続に問題はなく、前述の設定を使用しています)。

    私がやっている間違いはありますか?どのようなヘルプや照明の質​​問は非常に高く評価されます。

  • 答えて

    0

    私は実際に途中で多くの手順を逃しましたが、時系列で問題に従ってみましょう。

    1)OpenSSLのコンパイル

    私はOpenSSLを再構築し、マイドキュメントフォルダにそれをインストール、実行している:

    ./configure no-shared --openssldir=~/Documents/openssl-lib darwin-i386-cc 
    make 
    make install 
    

    INSTALLのステップは、リンカが必要 "のlib" フォルダを追加しました。

    2)私はpkg-configをインストールする必要がありました実際libcurlをコンパイルする前にlibcurl

    をコンパイルします。

    brew install pkg-config 
    

    それから私は、正しいconfigureコマンドを与えた:

    CPPFLAGS="-I/Users/me/Documents/openssl-lib -I/Users/me/Documents/openssl-lib/include" 
    LDFLAGS="-L/Users/me/Documents/openssl-lib/lib" LIBS="-ldl -lpthread" 
    CFLAGS="-arch i386" 
    ./configure --with-ssl=/Users/me/Documents/openssl-lib 
        --disable-sharing -build=i386-darwin 
    

    はNOW opensslオプションが正しくあり理由は次のとおりです。

    1. pkg-configがインストールされています。
    2. 正しいopensslのバージョンにリンクされたら、私は仕事がまだ行われていなかった...

      CFLAGS -arch i386

    を追加しました!なぜなら私はテストアプリケーションでバイナリをリンクしなければならなかったからです。脇libcurl私は後-lz

    を "その他のコンパイラオプション" を追加する(

  • zlib(XCodeのは、そのためのフレームワークが含まれます)

    1. openssl(はい、再び)
    2. LDAPをリンクしなければなりませんでした私のテストプログラムはCloudfrontに正しく接続され、正しいcurlバージョンを示しました。

  • 関連する問題