2016-05-24 1 views
0

J'essaie de compiler curl et de le lier statiquement à un autre projet. J'ai réussi à le compiler pour mon architecture mac (x86_64) et j'ai obtenu "libcurl.a". Maintenant, quand j'essaie de construire:Quel est l'emplacement de la bibliothèque darwinssl sur Mac OS X?

#include <curl/curl.h> 

int main() 
{ 
    CURL *curl = curl_easy_init(); 
} 

avec g ++ tornado.cc -o tornade (chemin-où-il-est) libcurl.a std = c 11

++ je reçois :

Undefined symbols for architecture x86_64: 
    "_CFArrayAppendValue", referenced from: 
     _append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o) 
    "_CFArrayCreate", referenced from: 
     _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o) 
    "_CFArrayCreateMutable", referenced from: 
     _darwinssl_connect_step2 in libcurl.a(libcurl_la-darwinssl.o) 
    "_CFArrayGetCount", referenced from: 
     _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o) 
    "_CFArrayGetValueAtIndex", referenced from: 
     _darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o) 
    "_CFDataCreate", referenced from: 
     _append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o) 

Si je comprends qu'il veut obtenir des liens pour darwinssl, mais je ne sais pas où trouver ceux-ci.

Le readme pour boucle (https://github.com/biasedbit/curl-ios-build-scripts/blob/master/README.md) - ne mentionne cela dépend de libz.dylib et Security.framework mais ne donne pas d'indices sur ce qu'ils sont, quand et comment ai-je besoin, et comment les inclure.

P.S. l'inclusion régulière de curl fonctionne bien: g++ tornado.cc -o tornado -lcurl -std=c++11

+0

En fait, on dirait qu'il a besoin de fonctionnalités du framework Foundation. Que se passe-t-il si vous ajoutez '-framework CoreFoundation' à' gcc'? Edit: Si cela dit que cela dépend de libz et de Security, alors essayez '-lz -framework Security' – rwols

+0

cela n'a pas fait la différence –

+0

Pensez à installer Macports et à utiliser' sudo port install curl'. Cela vous épargnera des tonnes de temps. – trojanfoe

Répondre

2

J'ai trouvé un certain temps à déranger sur le mac. Voici la commande qui a fonctionné pour moi:

gcc main.cpp -I path/to/include path/to/libcurl.a -framework Foundation -lz -framework Security 

Fondamentalement, vous avez besoin -framework Foundation, -lz et -framework Security.