Je rencontre de sérieuses difficultés pour créer libcurl
sous Mac OSX version 10.12.6.Création de libcurl sur MacOSX avec prise en charge 32 bits et version OpenSSL personnalisée
J'ai besoin d'une version spécifique de la bibliothèque statique (7.40.0), liée à une version spécifique d'OpenSSL (1.0.2c), avec une prise en charge de l'architecture 32 bits.
Je trouve le code source sur le site officiel et exécuté le script de configuration qui me semblait les paramètres corrects:
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
où:
CPPFLAGS
spécifie le dossier de OpenSSL en-têtes;LDFLAGS
spécifie le dossier des bibliothèques OpenSSL (libssl.a
,libcrypto.a
);--disable-shared
désactive la construction de la bibliothèque dynamique (pas de sortielibcurl.dylib
);--build=i386-darwin
configure la construction pour les architectures cibles Apple 32 bits;--with-ssl
active les options SSL.
Cependant, cet appel échoue pour deux raisons:
- Regarder dans la sortie de configuration, je lis que «
host system type
» est réglé suri386-darwin
, comme la cible. Je peux résoudre ce problème en spécifiant que--host=x86_64-darwin
; Je reçois que SSL est en fait pas activé:
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.
Bien sûr, je peux résoudre ce problème en spécifiant --with-darwinssl
, mais quand je fais, je reçois l'avertissement suivant:
ld: warning: directory not found for option '-L/Users/me/Documents/Projects/3rdparty/openssl/MacOSX/openssl-1.0.2c'
Et la bibliothèque OpenSSL que j'essaie de lier est ignorée.
Enfin, si je tente de supprimer CFLAGS
et LDFLAGS
pour SSL (juste pour voir si les travaux d'appels simples):
./configure --build=i386-darwin --disable-shared --with-darwinssl
Quand je fais, les scripts se terminent bien configure
et make
. Si je tente d'inclure les curl
-têtes dans un code source exemple:
#import <Foundation/Foundation.h>
#include "curl/curl.h"
et spécifiez le répertoire curl-7.40.0/include
dans le chemin de recherche XCode en-têtes, je reçois des questions sémantiques:
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
J'ai trouvé le problème décrit here . Si je vais vérifier les curlbuild.h
#define
s, je trouve que le CURL_SIZEOF_LONG
est 8, mais est définitivement défini. Le projet est compilé avec Architecture i386.
Enfin, si je tente de simplifier les choses encore plus et exécuter un agnostique:
./configure --disable-shared --with-darwinssl
et changer l'architecture exemple de projet de retour à Universal 32/64 bits, quand je lien que je reçois un tas d'erreurs étranges :
"_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:
Je suis probablement soit manquer quelque chose d'évident ici, ou manquant beaucoup de petites briques le long du chemin. De toute façon, je suis complètement perdu et je me demande si ma tâche est réellement réalisable.
je pouvais «recompiler l'ensemble de l'application en 64 bits, mais je dois probablement cette version de libcurl
et que version d'OpenSSL, et si je ne peux même pas un exemple d'application va il n'y a pas de point dans passer à la chose réelle (si vous êtes curieux de savoir pourquoi j'ai besoin de cette configuration, vérifiez my other thread about libcurl
problems: le client Windows n'a aucun problème à se connecter et utilise la configuration susmentionnée).
Voyez-vous une erreur évidente que je fais? Toute aide ou question éclairante sera grandement appréciée.