在Windows上通过NDK编译CURL

如果不想编译的,可在这里下载,下载内容包含so和需要的头文件
因为Windows不能像Linux那样执行configure命令,所以需要手动新建一个curl_config.h文件,该文件需要放入源码目录的lib文件夹下,具体内容如下:

/* lib/curl_config.h.  Generated from curl_config.h.in by configure.  */
/* lib/curl_config.h.in.  Generated from configure.ac by autoheader.  */
 
/* when building libcurl itself */
#define BUILDING_LIBCURL 1
/* #undef BUILDING_LIBCURL */
 
/* Location of default ca bundle */
/* #undef CURL_CA_BUNDLE */
 
/* Location of default ca path */
/* #undef CURL_CA_PATH */
 
/* to disable cookies support */
/* #undef CURL_DISABLE_COOKIES */
 
/* to disable cryptographic authentication */
/* #undef CURL_DISABLE_CRYPTO_AUTH */
 
/* to disable DICT */
/* #undef CURL_DISABLE_DICT */
 
/* to disable FILE */
/* #undef CURL_DISABLE_FILE */
 
/* to disable FTP */
#define CURL_DISABLE_FTP 1
 
/* to disable HTTP */
/* #undef CURL_DISABLE_HTTP */
 
/* to disable IMAP */
#define CURL_DISABLE_IMAP 1
 
/* to disable LDAP */
#define CURL_DISABLE_LDAP 1
 
/* to disable LDAPS */
#define CURL_DISABLE_LDAPS 1
 
/* to disable POP3 */
#define CURL_DISABLE_POP3 1
 
/* to disable proxies */
/* #undef CURL_DISABLE_PROXY */
 
/* to disable RTSP */
#define CURL_DISABLE_RTSP 1
 
/* to disable SMTP */
#define CURL_DISABLE_SMTP 1
 
/* to disable TELNET */
#define CURL_DISABLE_TELNET 1
 
/* to disable TFTP */
#define CURL_DISABLE_TFTP 1
 
/* to disable verbose strings */
/* #undef CURL_DISABLE_VERBOSE_STRINGS */
 
/* to make a symbol visible */
/* #undef CURL_EXTERN_SYMBOL */
 
/* to enable hidden symbols */
/* #undef CURL_HIDDEN_SYMBOLS */
 
/* W$ LDAP with non-W$ compiler */
/* #undef CURL_LDAP_HYBRID */
 
/* Use W$ LDAP implementation */
/* #undef CURL_LDAP_WIN */
 
/* when not building a shared library */
/* #undef CURL_STATICLIB */
 
/* your Entropy Gathering Daemon socket pathname */
/* #undef EGD_SOCKET */
 
/* Define if you want to enable IPv6 support */
/* #undef ENABLE_IPV6 */
 
/* Define to the type qualifier of arg 1 for getnameinfo. */
#define GETNAMEINFO_QUAL_ARG1 const
 
/* Define to the type of arg 1 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
 
/* Define to the type of arg 2 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG2 socklen_t
 
/* Define to the type of args 4 and 6 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG46 size_t
 
/* Define to the type of arg 7 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG7 int
 
/* Specifies the number of arguments to getservbyport_r */
/* #undef GETSERVBYPORT_R_ARGS */
 
/* Specifies the size of the buffer to pass to getservbyport_r */
/* #undef GETSERVBYPORT_R_BUFSIZE */
 
/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1
 
/* Define to 1 if you have the <alloca.h> header file. */
#define HAVE_ALLOCA_H 1
 
/* Define to 1 if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H 1
 
/* Define to 1 if you have the <arpa/tftp.h> header file. */
/* #undef HAVE_ARPA_TFTP_H */
 
/* Define to 1 if you have the <assert.h> header file. */
#define HAVE_ASSERT_H 1
 
/* Define to 1 if you have the basename function. */
#define HAVE_BASENAME 1
 
/* Define to 1 if bool is an available type. */
#define HAVE_BOOL_T 1
 
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#define HAVE_CLOCK_GETTIME_MONOTONIC 1
 
/* Define to 1 if you have the closesocket function. */
/* #undef HAVE_CLOSESOCKET */
 
/* Define to 1 if you have the CloseSocket camel case function. */
/* #undef HAVE_CLOSESOCKET_CAMEL */
 
/* Define to 1 if you have the connect function. */
#define HAVE_CONNECT 1
 
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
 
/* Define to 1 if you have the <crypto.h> header file. */
/* #undef HAVE_CRYPTO_H */
 
/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */
 
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
 
/* Define to 1 if you have the `ENGINE_cleanup' function. */
/* #undef HAVE_ENGINE_CLEANUP */
 
/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
 
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
 
/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */
 
/* Define to 1 if you have the fcntl function. */
#define HAVE_FCNTL 1
 
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
 
/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
#define HAVE_FCNTL_O_NONBLOCK 1
 
/* Define to 1 if you have the fdopen function. */
#define HAVE_FDOPEN 1
 
/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1
 
/* Define to 1 if you have the freeaddrinfo function. */
#define HAVE_FREEADDRINFO 1
 
/* Define to 1 if you have the freeifaddrs function. */
/* #undef HAVE_FREEIFADDRS */
 
/* Define to 1 if you have the ftruncate function. */
#define HAVE_FTRUNCATE 1
 
/* Define to 1 if you have a working getaddrinfo function. */
#define HAVE_GETADDRINFO 1
 
/* Define to 1 if the getaddrinfo function is threadsafe. */
#define HAVE_GETADDRINFO_THREADSAFE 1
 
/* Define to 1 if you have the `geteuid' function. */
#define HAVE_GETEUID 1
 
/* Define to 1 if you have the gethostbyaddr function. */
#define HAVE_GETHOSTBYADDR 1
 
/* Define to 1 if you have the gethostbyaddr_r function. */
/* #undef HAVE_GETHOSTBYADDR_R */
 
/* gethostbyaddr_r() takes 5 args */
/* #undef HAVE_GETHOSTBYADDR_R_5 */
 
/* gethostbyaddr_r() takes 7 args */
/* #undef HAVE_GETHOSTBYADDR_R_7 */
 
/* gethostbyaddr_r() takes 8 args */
/* #undef HAVE_GETHOSTBYADDR_R_8 */
 
/* Define to 1 if you have the gethostbyname function. */
#define HAVE_GETHOSTBYNAME 1
 
/* Define to 1 if you have the gethostbyname_r function. */
#define HAVE_GETHOSTBYNAME_R 1
 
/* gethostbyname_r() takes 3 args */
/* #undef HAVE_GETHOSTBYNAME_R_3 */
 
/* gethostbyname_r() takes 5 args */
/* #undef HAVE_GETHOSTBYNAME_R_5 */
 
/* gethostbyname_r() takes 6 args */
#define HAVE_GETHOSTBYNAME_R_6 1
 
/* Define to 1 if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
 
/* Define to 1 if you have a working getifaddrs function. */
/* #undef HAVE_GETIFADDRS */
 
/* Define to 1 if you have the getnameinfo function. */
#define HAVE_GETNAMEINFO 1
 
/* Define to 1 if you have the `getpass_r' function. */
/* #undef HAVE_GETPASS_R */
 
/* Define to 1 if you have the `getppid' function. */
#define HAVE_GETPPID 1
 
/* Define to 1 if you have the `getprotobyname' function. */
#define HAVE_GETPROTOBYNAME 1
 
/* Define to 1 if you have the `getpwuid' function. */
#define HAVE_GETPWUID 1
 
/* Define to 1 if you have the `getrlimit' function. */
#define HAVE_GETRLIMIT 1
 
/* Define to 1 if you have the getservbyport_r function. */
/* #undef HAVE_GETSERVBYPORT_R */
 
/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1
 
/* Define to 1 if you have a working glibc-style strerror_r function. */
/* #undef HAVE_GLIBC_STRERROR_R */
 
/* Define to 1 if you have a working gmtime_r function. */
#define HAVE_GMTIME_R 1
 
/* if you have the gssapi libraries */
/* #undef HAVE_GSSAPI */
 
/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
 
/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_H */
 
/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
 
/* if you have the GNU gssapi libraries */
/* #undef HAVE_GSSGNU */
 
/* if you have the Heimdal gssapi libraries */
/* #undef HAVE_GSSHEIMDAL */
 
/* if you have the MIT gssapi libraries */
/* #undef HAVE_GSSMIT */
 
/* Define to 1 if you have the `idna_strerror' function. */
/* #undef HAVE_IDNA_STRERROR */
 
/* Define to 1 if you have the `idn_free' function. */
/* #undef HAVE_IDN_FREE */
 
/* Define to 1 if you have the <idn-free.h> header file. */
/* #undef HAVE_IDN_FREE_H */
 
/* Define to 1 if you have the <ifaddrs.h> header file. */
/* #undef HAVE_IFADDRS_H */
 
/* Define to 1 if you have the `inet_addr' function. */
#define HAVE_INET_ADDR 1
 
/* Define to 1 if you have the inet_ntoa_r function. */
/* #undef HAVE_INET_NTOA_R */
 
/* inet_ntoa_r() takes 2 args */
/* #undef HAVE_INET_NTOA_R_2 */
 
/* inet_ntoa_r() takes 3 args */
/* #undef HAVE_INET_NTOA_R_3 */
 
/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
#define HAVE_INET_NTOP 1
 
/* Define to 1 if you have a IPv6 capable working inet_pton function. */
#define HAVE_INET_PTON 1
 
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
 
/* Define to 1 if you have the ioctl function. */
#define HAVE_IOCTL 1
 
/* Define to 1 if you have the ioctlsocket function. */
/* #undef HAVE_IOCTLSOCKET */
 
/* Define to 1 if you have the IoctlSocket camel case function. */
/* #undef HAVE_IOCTLSOCKET_CAMEL */
 
/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
   */
/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
 
/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
/* #undef HAVE_IOCTLSOCKET_FIONBIO */
 
/* Define to 1 if you have a working ioctl FIONBIO function. */
#define HAVE_IOCTL_FIONBIO 1
 
/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
#define HAVE_IOCTL_SIOCGIFADDR 1
 
/* Define to 1 if you have the <io.h> header file. */
/* #undef HAVE_IO_H */
 
/* if you have the Kerberos4 libraries (including -ldes) */
/* #undef HAVE_KRB4 */
 
/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
/* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM */
 
/* Define to 1 if you have the <krb.h> header file. */
/* #undef HAVE_KRB_H */
 
/* Define to 1 if you have the lber.h header file. */
/* #undef HAVE_LBER_H */
 
/* Define to 1 if you have the ldapssl.h header file. */
/* #undef HAVE_LDAPSSL_H */
 
/* Define to 1 if you have the ldap.h header file. */
/* #undef HAVE_LDAP_H */
 
/* Use LDAPS implementation */
/* #undef HAVE_LDAP_SSL */
 
/* Define to 1 if you have the ldap_ssl.h header file. */
/* #undef HAVE_LDAP_SSL_H */
 
/* Define to 1 if you have the `ldap_url_parse' function. */
/* #undef HAVE_LDAP_URL_PARSE */
 
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
 
/* Define to 1 if you have the `idn' library (-lidn). */
/* #undef HAVE_LIBIDN */
 
/* Define to 1 if you have the `resolv' library (-lresolv). */
/* #undef HAVE_LIBRESOLV */
 
/* Define to 1 if you have the `resolve' library (-lresolve). */
/* #undef HAVE_LIBRESOLVE */
 
/* Define to 1 if you have the `ssh2' library (-lssh2). */
/* #undef HAVE_LIBSSH2 */
 
/* Define to 1 if you have the <libssh2.h> header file. */
/* #undef HAVE_LIBSSH2_H */
 
/* Define to 1 if you have the `libssh2_version' function. */
/* #undef HAVE_LIBSSH2_VERSION */
 
/* Define to 1 if you have the `ssl' library (-lssl). */
/* #undef HAVE_LIBSSL */
 
/* if zlib is available */
/* #undef HAVE_LIBZ */
 
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
 
/* if your compiler supports LL */
#define HAVE_LL 1
 
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
 
/* Define to 1 if you have a working localtime_r function. */
#define HAVE_LOCALTIME_R 1
 
/* Define to 1 if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG 1
 
/* Define to 1 if you have the malloc.h header file. */
#define HAVE_MALLOC_H 1
 
/* Define to 1 if you have the memory.h header file. */
#define HAVE_MEMORY_H 1
 
/* Define to 1 if you have the memrchr function or macro. */
#define HAVE_MEMRCHR 1
 
/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#define HAVE_MSG_NOSIGNAL 1
 
/* Define to 1 if you have the <netdb.h> header file. */
#define HAVE_NETDB_H 1
 
/* Define to 1 if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H 1
 
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#define HAVE_NETINET_TCP_H 1
 
/* Define to 1 if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H 1
 
/* Define to 1 if NI_WITHSCOPEID exists and works. */
/* #undef HAVE_NI_WITHSCOPEID */
 
/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
   */
/* #undef HAVE_OLD_GSSMIT */
 
/* Define to 1 if you have the <openssl/crypto.h> header file. */
/* #undef HAVE_OPENSSL_CRYPTO_H */
 
/* Define to 1 if you have the <openssl/engine.h> header file. */
/* #undef HAVE_OPENSSL_ENGINE_H */
 
/* Define to 1 if you have the <openssl/err.h> header file. */
/* #undef HAVE_OPENSSL_ERR_H */
 
/* Define to 1 if you have the <openssl/pem.h> header file. */
/* #undef HAVE_OPENSSL_PEM_H */
 
/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
/* #undef HAVE_OPENSSL_PKCS12_H */
 
/* Define to 1 if you have the <openssl/rsa.h> header file. */
/* #undef HAVE_OPENSSL_RSA_H */
 
/* Define to 1 if you have the <openssl/ssl.h> header file. */
/* #undef HAVE_OPENSSL_SSL_H */
 
/* Define to 1 if you have the <openssl/x509.h> header file. */
/* #undef HAVE_OPENSSL_X509_H */
 
/* Define to 1 if you have the <pem.h> header file. */
/* #undef HAVE_PEM_H */
 
/* Define to 1 if you have the `perror' function. */
#define HAVE_PERROR 1
 
/* Define to 1 if you have the `pipe' function. */
#define HAVE_PIPE 1
 
/* if you have the function PK11_CreateGenericObject */
/* #undef HAVE_PK11_CREATEGENERICOBJECT */
 
/* Define to 1 if you have a working poll function. */
#define HAVE_POLL 1
 
/* If you have a fine poll */
#define HAVE_POLL_FINE 1
 
/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1
 
/* Define to 1 if you have a working POSIX-style strerror_r function. */
#define HAVE_POSIX_STRERROR_R 1
 
/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1
 
/* Define to 1 if you have the `RAND_egd' function. */
/* #undef HAVE_RAND_EGD */
 
/* Define to 1 if you have the `RAND_screen' function. */
/* #undef HAVE_RAND_SCREEN */
 
/* Define to 1 if you have the `RAND_status' function. */
/* #undef HAVE_RAND_STATUS */
 
/* Define to 1 if you have the recv function. */
#define HAVE_RECV 1
 
/* Define to 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
 
/* Define to 1 if you have the <rsa.h> header file. */
/* #undef HAVE_RSA_H */
 
/* Define to 1 if you have the select function. */
#define HAVE_SELECT 1
 
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
 
/* Define to 1 if you have the <setjmp.h> header file. */
#define HAVE_SETJMP_H 1
 
/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
 
/* Define to 1 if you have the `setmode' function. */
/* #undef HAVE_SETMODE */
 
/* Define to 1 if you have the `setrlimit' function. */
#define HAVE_SETRLIMIT 1
 
/* Define to 1 if you have the setsockopt function. */
#define HAVE_SETSOCKOPT 1
 
/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
 
/* Define to 1 if you have the <sgtty.h> header file. */
#define HAVE_SGTTY_H 1
 
/* Define to 1 if you have the sigaction function. */
#define HAVE_SIGACTION 1
 
/* Define to 1 if you have the siginterrupt function. */
#define HAVE_SIGINTERRUPT 1
 
/* Define to 1 if you have the signal function. */
/* #undef HAVE_SIGNAL */
 
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
 
/* Define to 1 if you have the sigsetjmp function or macro. */
#define HAVE_SIGSETJMP 1
 
/* Define to 1 if sig_atomic_t is an available typedef. */
#define HAVE_SIG_ATOMIC_T 1
 
/* Define to 1 if sig_atomic_t is already defined as volatile. */
/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
 
/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
/* #undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID */
 
/* Define to 1 if you have the socket function. */
#define HAVE_SOCKET 1
 
/* Define to 1 if you have the <socket.h> header file. */
/* #undef HAVE_SOCKET_H */
 
/* Define this if you have the SPNEGO library fbopenssl */
/* #undef HAVE_SPNEGO */
 
/* Define to 1 if you have the `SSL_get_shutdown' function. */
/* #undef HAVE_SSL_GET_SHUTDOWN */
 
/* Define to 1 if you have the <ssl.h> header file. */
/* #undef HAVE_SSL_H */
 
/* Define to 1 if you have the <stdbool.h> header file. */
#define HAVE_STDBOOL_H 1
 
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
 
/* Define to 1 if you have the <stdio.h> header file. */
#define HAVE_STDIO_H 1
 
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
 
/* Define to 1 if you have the strcasecmp function. */
#define HAVE_STRCASECMP 1
 
/* Define to 1 if you have the strcasestr function. */
#define HAVE_STRCASESTR 1
 
/* Define to 1 if you have the strcmpi function. */
/* #undef HAVE_STRCMPI */
 
/* Define to 1 if you have the strdup function. */
#define HAVE_STRDUP 1
 
/* Define to 1 if you have the strerror_r function. */
#define HAVE_STRERROR_R 1
 
/* Define to 1 if you have the stricmp function. */
/* #undef HAVE_STRICMP */
 
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
 
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
 
/* Define to 1 if you have the strlcat function. */
#define HAVE_STRLCAT 1
 
/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */
 
/* Define to 1 if you have the strncasecmp function. */
#define HAVE_STRNCASECMP 1
 
/* Define to 1 if you have the strncmpi function. */
/* #undef HAVE_STRNCMPI */
 
/* Define to 1 if you have the strnicmp function. */
/* #undef HAVE_STRNICMP */
 
/* Define to 1 if you have the <stropts.h> header file. */
/* #undef HAVE_STROPTS_H */
 
/* Define to 1 if you have the strstr function. */
#define HAVE_STRSTR 1
 
/* Define to 1 if you have the strtok_r function. */
#define HAVE_STRTOK_R 1
 
/* Define to 1 if you have the strtoll function. */
#define HAVE_STRTOLL 1
 
/* if struct sockaddr_storage is defined */
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
 
/* Define to 1 if you have the timeval struct. */
#define HAVE_STRUCT_TIMEVAL 1
 
/* Define to 1 if you have the <sys/filio.h> header file. */
/* #undef HAVE_SYS_FILIO_H */
 
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H 1
 
/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
 
/* Define to 1 if you have the <sys/poll.h> header file. */
#define HAVE_SYS_POLL_H 1
 
/* Define to 1 if you have the <sys/resource.h> header file. */
#define HAVE_SYS_RESOURCE_H 1
 
/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1
 
/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
 
/* Define to 1 if you have the <sys/sockio.h> header file. */
/* #undef HAVE_SYS_SOCKIO_H */
 
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
 
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
 
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
 
/* Define to 1 if you have the <sys/uio.h> header file. */
#define HAVE_SYS_UIO_H 1
 
/* Define to 1 if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H 1
 
/* Define to 1 if you have the <sys/utime.h> header file. */
#define HAVE_SYS_UTIME_H 1
 
/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1
 
/* Define to 1 if you have the <termio.h> header file. */
/* #undef HAVE_TERMIO_H */
 
/* Define to 1 if you have the <time.h> header file. */
#define HAVE_TIME_H 1
 
/* Define to 1 if you have the <tld.h> header file. */
/* #undef HAVE_TLD_H */
 
/* Define to 1 if you have the `tld_strerror' function. */
/* #undef HAVE_TLD_STRERROR */
 
/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1
 
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
 
/* Define to 1 if you have the `utime' function. */
#define HAVE_UTIME 1
 
/* Define to 1 if you have the <utime.h> header file. */
#define HAVE_UTIME_H 1
 
/* Define to 1 if compiler supports C99 variadic macro style. */
#define HAVE_VARIADIC_MACROS_C99 1
 
/* Define to 1 if compiler supports old gcc variadic macro style. */
#define HAVE_VARIADIC_MACROS_GCC 1
 
/* Define to 1 if you have the winber.h header file. */
/* #undef HAVE_WINBER_H */
 
/* Define to 1 if you have the windows.h header file. */
/* #undef HAVE_WINDOWS_H */
 
/* Define to 1 if you have the winldap.h header file. */
/* #undef HAVE_WINLDAP_H */
 
/* Define to 1 if you have the winsock2.h header file. */
/* #undef HAVE_WINSOCK2_H */
 
/* Define to 1 if you have the winsock.h header file. */
/* #undef HAVE_WINSOCK_H */
 
/* Define this symbol if your OS supports changing the contents of argv */
/* #undef HAVE_WRITABLE_ARGV */
 
/* Define to 1 if you have the writev function. */
#define HAVE_WRITEV 1
 
/* Define to 1 if you have the ws2tcpip.h header file. */
/* #undef HAVE_WS2TCPIP_H */
 
/* Define to 1 if you have the <x509.h> header file. */
/* #undef HAVE_X509_H */
 
/* if you have the zlib.h header file */
/* #undef HAVE_ZLIB_H */
 
/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#define LT_OBJDIR ".libs/"
 
/* Define to 1 if you are building a native Windows target. */
/* #undef NATIVE_WINDOWS */
 
/* Define to 1 if you need the lber.h header file even with ldap.h */
/* #undef NEED_LBER_H */
 
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
/* #undef NEED_MALLOC_H */
 
/* Define to 1 if you need the memory.h header file even with stdlib.h */
/* #undef NEED_MEMORY_H */
 
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
/* #undef NEED_REENTRANT */
 
/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
/* #undef NEED_THREAD_SAFE */
 
/* cpu-machine-OS */
#define OS "arm-unknown-linux-gnu"
 
/* Name of package */
#define PACKAGE "curl"
 
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"
 
/* Define to the full name of this package. */
#define PACKAGE_NAME "curl"
 
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "curl -"
 
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "curl"
 
/* Define to the home page for this package. */
/* #undef PACKAGE_URL */
 
/* Define to the version of this package. */
#define PACKAGE_VERSION "-"
 
/* a suitable file to read random data from */
/* #undef RANDOM_FILE */
 
/* Define to the type of arg 1 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG1 */
 
/* Define to the type pointed by arg 2 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG2 */
 
/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG2_IS_VOID */
 
/* Define to the type of arg 3 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG3 */
 
/* Define to the type of arg 4 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG4 */
 
/* Define to the type pointed by arg 5 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG5 */
 
/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
 
/* Define to the type pointed by arg 6 for recvfrom. */
/* #undef RECVFROM_TYPE_ARG6 */
 
/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
 
/* Define to the function return type for recvfrom. */
/* #undef RECVFROM_TYPE_RETV */
 
/* Define to the type of arg 1 for recv. */
#define RECV_TYPE_ARG1 int
 
/* Define to the type of arg 2 for recv. */
#define RECV_TYPE_ARG2 void *
 
/* Define to the type of arg 3 for recv. */
#define RECV_TYPE_ARG3 size_t
 
/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 unsigned int
 
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t
 
/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void
 
/* Define to the type qualifier of arg 5 for select. */
#define SELECT_QUAL_ARG5
 
/* Define to the type of arg 1 for select. */
#define SELECT_TYPE_ARG1 int
 
/* Define to the type of args 2, 3 and 4 for select. */
#define SELECT_TYPE_ARG234 fd_set *
 
/* Define to the type of arg 5 for select. */
#define SELECT_TYPE_ARG5 struct timeval *
 
/* Define to the function return type for select. */
#define SELECT_TYPE_RETV int
 
/* Define to the type qualifier of arg 2 for send. */
#define SEND_QUAL_ARG2 const
 
/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int
 
/* Define to the type of arg 2 for send. */
#define SEND_TYPE_ARG2 void *
 
/* Define to the type of arg 3 for send. */
#define SEND_TYPE_ARG3 size_t
 
/* Define to the type of arg 4 for send. */
#define SEND_TYPE_ARG4 unsigned int
 
/* Define to the function return type for send. */
#define SEND_TYPE_RETV ssize_t
 
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
 
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
 
/* The size of `off_t', as computed by sizeof. */
#define SIZEOF_OFF_T 4
 
/* The size of `short', as computed by sizeof. */
#define SIZEOF_SHORT 2
 
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
 
/* The size of `time_t', as computed by sizeof. */
#define SIZEOF_TIME_T 4
 
/* The size of `void*', as computed by sizeof. */
#define SIZEOF_VOIDP 4
 
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
 
/* Define to the type of arg 3 for strerror_r. */
#define STRERROR_R_TYPE_ARG3 size_t
 
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
 
/* Define to enable c-ares support */
/* #undef USE_ARES */
 
/* Define to disable non-blocking sockets. */
/* #undef USE_BLOCKING_SOCKETS */
 
/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */
 
/* if libSSH2 is in use */
/* #undef USE_LIBSSH2 */
 
/* If you want to build curl with the built-in manual */
/* #undef USE_MANUAL */
 
/* if NSS is enabled */
/* #undef USE_NSS */
 
/* if OpenSSL is in use */
/* #undef USE_OPENSSL */
 
/* if SSL is enabled */
/* #undef USE_SSLEAY */
 
/* Define to 1 if you are building a Windows target without large file
   support. */
/* #undef USE_WIN32_LARGE_FILES */
 
/* to enable SSPI support */
/* #undef USE_WINDOWS_SSPI */
 
/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
/* #undef USE_YASSLEMUL */
 
/* Version number of package */
#define VERSION "7.79.0"
 
/* Define to avoid automatic inclusion of winsock.h */
/* #undef WIN32_LEAN_AND_MEAN */
 
/* Define to 1 if OS is AIX. */
#ifndef _ALL_SOURCE
/* #  undef _ALL_SOURCE */
#endif
 
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
 
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
 
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
 
/* Type to use in place of in_addr_t when system does not provide it. */
/* #undef in_addr_t */
 
/* Define to `__inline__' or `__inline' if that's what the C compiler
   calls it, or to nothing if 'inline' is not supported under any name.  */
 
#define __aarch64__
#if defined(__aarch64__)
#    define CURL_SIZEOF_LONG           8
#    define CURL_TYPEOF_CURL_OFF_T     long
#    define CURL_FORMAT_CURL_OFF_T     "ld"
#    define CURL_FORMAT_CURL_OFF_TU    "lu"
#    define CURL_FORMAT_OFF_T          "%ld"
#    define CURL_SIZEOF_CURL_OFF_T     8
#    define CURL_SUFFIX_CURL_OFF_T     L
#    define CURL_SUFFIX_CURL_OFF_TU    UL
#    define SIZEOF_CURL_OFF_T 8
 
#endif
 
#ifndef __cplusplus
/* #undef inline */
#endif
 
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
 
/* the signed version of size_t */
/* #undef ssize_t */

另外需要修改源码目录下的packages/Android/Android.mk文件,具体内容如下:

#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
###########################################################################
# Google Android makefile for curl and libcurl
#
# This file can be used when building curl using the full Android source
# release or the NDK. Most users do not want or need to do this; please
# instead read the Android section in docs/INSTALL for alternate
# methods.
#
# Place the curl source (including this makefile) into external/curl/ in the
# Android source tree.  Then build them with 'make curl' or just 'make libcurl'
# from the Android root. Tested with Android versions 1.5, 2.1-2.3
#
# Note: you must first create a curl_config.h file by running configure in the
# Android environment. The only way I've found to do this is tricky. Perform a
# normal Android build with libcurl in the source tree, providing the target
# "showcommands" to make. The build will eventually fail (because curl_config.h
# doesn't exist yet), but the compiler commands used to build curl will be
# shown. Now, from the external/curl/ directory, run curl's normal configure
# command with flags that match what Android itself uses. This will mean
# putting the compiler directory into the PATH, putting the -I, -isystem and
# -D options into CPPFLAGS, putting the -W, -m, -f, -O and -nostdlib options
# into CFLAGS, and putting the -Wl, -L and -l options into LIBS, along with the
# path to the files libgcc.a, crtbegin_dynamic.o, and ccrtend_android.o.
# Remember that the paths must be absolute since you will not be running
# configure from the same directory as the Android make.  The normal
# cross-compiler options must also be set. Note that the -c, -o, -MD and
# similar flags must not be set.
#
# To see all the LIBS options, you'll need to do the "showcommands" trick on an
# executable that's already buildable and watch what flags Android uses to link
# it (dhcpcd is a good choice to watch). You'll also want to add -L options to
# LIBS that point to the out/.../obj/lib/ and out/.../obj/system/lib/
# directories so that additional libraries can be found and used by curl.
#
# The end result will be a configure command that looks something like this
# (the environment variable A is set to the Android root path which makes the
# command shorter):
#
#  A=`realpath ../..` && \
#  PATH="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/bin:$PATH" \
#  ./configure --host=arm-linux CC=arm-eabi-gcc \
#  CPPFLAGS="-I $A/system/core/include ..." \
#  CFLAGS="-nostdlib -fno-exceptions -Wno-multichar ..." \
#  LIBS="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/lib/gcc/arm-eabi/X\
#  /interwork/libgcc.a ..."
#
# Finally, copy the file COPYING to NOTICE so that the curl license gets put
# into the right place (but see the note about this below).
#
# Dan Fandrich
# November 2011

LOCAL_PATH:= $(call my-dir)/../..

common_CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers -DHAVE_CONFIG_H

#########################
# Build the libcurl library

include $(CLEAR_VARS)
include $(LOCAL_PATH)/lib/Makefile.inc
CURL_HEADERS := \
  curl.h \
  system.h \
  curlver.h \
  easy.h \
  mprintf.h \
  multi.h \
  stdcheaders.h \
  typecheck-gcc.h

LOCAL_SRC_FILES := $(addprefix lib/,$(CSOURCES))
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/ $(LOCAL_PATH)/lib/
LOCAL_CFLAGS += $(common_CFLAGS)

LOCAL_COPY_HEADERS_TO := libcurl/curl
LOCAL_COPY_HEADERS := $(addprefix include/curl/,$(CURL_HEADERS))

LOCAL_MODULE:= libcurl
LOCAL_MODULE_TAGS := optional

# Copy the licence to a place where Android will find it.
# Actually, this doesn't quite work because the build system searches
# for NOTICE files before it gets to this point, so it will only be seen
# on subsequent builds.
ALL_PREBUILT += $(LOCAL_PATH)/NOTICE
$(LOCAL_PATH)/NOTICE: $(LOCAL_PATH)/COPYING | $(ACP)
	$(copy-file-to-target)

include $(BUILD_STATIC_LIBRARY)


#########################
# Build the curl binary

# include $(CLEAR_VARS)
# include $(LOCAL_PATH)/src/Makefile.inc
# LOCAL_SRC_FILES := $(addprefix src/,$(CURL_CFILES))

# LOCAL_MODULE := curl
# LOCAL_MODULE_TAGS := optional
# LOCAL_STATIC_LIBRARIES := libcurl
# LOCAL_SYSTEM_SHARED_LIBRARIES := libc

# LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/lib

# # This may also need to include $(CURLX_CFILES) in order to correctly link
# # if libcurl is changed to be built as a dynamic library
# LOCAL_CFLAGS += $(common_CFLAGS)

# include $(BUILD_EXECUTABLE)

在源码目录下的packages/Android目录下还需要新增一个Application.mk文件,具体内容如下:

APP_PLATFORM = android-19
APP_ABI := all
APP_STL := c++_static
APP_CPPFLAGS := -fexceptions -frtti

接着打开CMD或者PowerShell进入packages/Android目录,执行以下命令:

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

经过以上步骤即可生成Android平台的curl静态库,如果需要动态库,修改Android.mk文件即可,将
include $(BUILD_STATIC_LIBRARY)改为include $(BUILD_SHARED_LIBRARY)即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值