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.a
、libcrypto.a
)。--disable-shared
は、ダイナミックライブラリのビルドを無効にします(libcurl.dylib
出力はありません)。--build=i386-darwin
は、Apple 32ビットターゲットアーキテクチャのビルドを構成します。--with-ssl
はSSLオプションを有効にします。
ただし、この呼び出しは、二つの理由で失敗した:
- また、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.
もちろん
私は--with-darwinssl
を指定することでこの問題に対処することができますが、私が行うとき、私は次の警告を得る:
私は、SSLが実際に有効になっていないことを得る
ld: warning: directory not found for option '-L/Users/me/Documents/Projects/3rdparty/openssl/MacOSX/openssl-1.0.2c'
をそして私がリンクしようとしているOpenSSLライブラリは無視されます。私はSSLのためCFLAGS
とLDFLAGS
を削除しよう
最後に、(ちょうど最も単純なコール作品かどうかを確認するには):私が行うと
./configure --build=i386-darwin --disable-shared --with-darwinssl
、configure
とmake
スクリプトがうまく終了します。私は、サンプルソースコード内の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クライアントは接続に問題はなく、前述の設定を使用しています)。
私がやっている間違いはありますか?どのようなヘルプや照明の質問は非常に高く評価されます。