交叉编译PolarSSL和curl
2015-07-17 17:47
603 查看
1、编译PolarSSL
下载地址
https://tls.mbed.org
我使用的版本为PolarSSL-1.3.8
根据不同的需要,可以设置不同的配置,需要修改polarssl-dev/include/polarssl/config.h。为了尽量缩小体积,我把自己使用的config.h贴出来。
编译命令:
#makeCC=arm-linux-gcc SHARE=1
编译前保证交叉编译工具安装,如果SHARED=1省略,会只编译静态库。
最后的体积为196kB。
2.编译curl
下载地址curl.haxx.se
我使用的版本为curl-7.41.0
需要根据自己的需求进行配置
./configure--host=arm-linux --without-ssl --with-polarssl --enable-optimize--disable-debug --disable-curldebug --disable-symbol-hiding--disable-dict
--disable-gopher --disable-imap --disable-pop3--disable-rtsp --disable-smtp --disable-telnet --disable-sspi--disable-smb --disable-ntlm-wb --disable-tls-srp--disable-soname-bump --disable-manual --disable-file --disable-ldap--disable-tftp --enable-http --disable-ftp
如果最后出现下面的信息,就说明配置正确了
configure:Configured to build curl/libcurl:
curlversion: 7.41.0
Hostsetup: arm-unknown-linux-gnu
Installprefix: /usr/local
Compiler: arm-linux-gcc
SSLsupport: enabled (PolarSSL)
SSHsupport: no (--with-libssh2)
zlibsupport: enabled
GSS-APIsupport: no (--with-gssapi)
TLS-SRPsupport: no (--enable-tls-srp)
resolver: default (--enable-ares / --enable-threaded-resolver)
IPv6support: no (--enable-ipv6)
Unixsockets support: enabled
IDNsupport: no (--with-{libidn,winidn})
Buildlibcurl: Shared=yes, Static=yes
Built-inmanual: no (--enable-manual)
--libcurloption: enabled (--disable-libcurl-option)
Verboseerrors: enabled (--disable-verbose)
SSPIsupport: no (--enable-sspi)
cacert bundle: no
cacert path: no
LDAPsupport: no (--enable-ldap / --with-ldap-lib /--with-lber-lib)
LDAPSsupport: no (--enable-ldaps)
RTSPsupport: no (--enable-rtsp)
RTMPsupport: no (--with-librtmp)
metalinksupport: no (--with-libmetalink)
HTTP2support: disabled (--with-nghttp2)
Protocols: HTTP HTTPS
在刚开始编译的时候,SSLsupoort看不到PolarSSL显示,就是说系统没有找到polarssl这个库。我把编译完成的libpolarssl和libpolarssl.so.7打包,放到交叉编译工具的arm-unknown-linux-gun/lib目录下,就可以找到了。把polarssl的头文件直接和curl的头文件方一起。
然后执行make就可以得到libcurl的库了,在curl-7.41.0/lib/.libs里面,动态库有3个libcurl,libcurl.so.4和libcurl.so.4.3.0。
在curl-7.41.0/src/.lib下面有一个curl命令行工具,可以测试最后编译完成的库是否可以工作。
把polarssl和curl的动态库放到arm文件系统的/lib或者/usr/lib库里,curl工具放到用户目录
#./curl-V
curl7.41.0 (arm-unknown-linux-gnu) libcurl/7.41.0 PolarSSL/1.3.8zlib/1.2.3
Protocols:http https
Features:Largefile SSL libz UnixSockets
说明库可以正确运行了。
打开网站看看。
#./curl https://www.baidu.com curl:(51) Cert verify failed: BADCERT_NOT_TRUSTED
上面的信息表示没有安装证书。我们从台式机的linux系统里直接找些证书放到curl目录,CentOS在/etc/pki/tls/certs/ca-bundle.crt,一些常用网站的证书在这里。
#./curl-k –cert ca-bundle.crthttps://www.baidu.com
会显示一些网页信息,说明可以正确运行了。
下载地址
https://tls.mbed.org
我使用的版本为PolarSSL-1.3.8
根据不同的需要,可以设置不同的配置,需要修改polarssl-dev/include/polarssl/config.h。为了尽量缩小体积,我把自己使用的config.h贴出来。
#ifndefPOLARSSL_CONFIG_H #definePOLARSSL_CONFIG_H /*System support */ #definePOLARSSL_HAVE_LONGLONG #definePOLARSSL_HAVE_ASM #definePOLARSSL_HAVE_TIME #definePOLARSSL_HAVE_IPV6 /*PolarSSL feature support */ #definePOLARSSL_CIPHER_MODE_CBC #definePOLARSSL_CIPHER_PADDING_PKCS7 #definePOLARSSL_CIPHER_PADDING_ONE_AND_ZEROS #definePOLARSSL_CIPHER_PADDING_ZEROS_AND_LEN #definePOLARSSL_CIPHER_PADDING_ZEROS #definePOLARSSL_KEY_EXCHANGE_PSK_ENABLED #definePOLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED #definePOLARSSL_KEY_EXCHANGE_RSA_ENABLED #definePOLARSSL_GENPRIME #definePOLARSSL_FS_IO #definePOLARSSL_PKCS1_V15 //#definePOLARSSL_PKCS1_V21 //add #definePOLARSSL_SSL_MAX_FRAGMENT_LENGTH //add #definePOLARSSL_SSL_PROTO_SSL3 #definePOLARSSL_SSL_PROTO_TLS1 #definePOLARSSL_SSL_PROTO_TLS1_1 #definePOLARSSL_SSL_PROTO_TLS1_2 //add #definePOLARSSL_SSL_SESSION_TICKETS #definePOLARSSL_SSL_SERVER_NAME_INDICATION #definePOLARSSL_VERSION_FEATURES #definePOLARSSL_X509_CHECK_KEY_USAGE //#definePOLARSSL_X509_CHECK_EXTENDED_KEY_USAGE //#definePOLARSSL_X509_RSASSA_PSS_SUPPORT //add /*PolarSSL modules */ #definePOLARSSL_AESNI_C //add #definePOLARSSL_AES_C #definePOLARSSL_ARC4_C #definePOLARSSL_ASN1_PARSE_C #definePOLARSSL_ASN1_WRITE_C #definePOLARSSL_BASE64_C #definePOLARSSL_BIGNUM_C #definePOLARSSL_CERTS_C #definePOLARSSL_CIPHER_C #definePOLARSSL_CTR_DRBG_C #definePOLARSSL_DES_C #definePOLARSSL_DHM_C #definePOLARSSL_ENTROPY_C //#definePOLARSSL_ERROR_C #definePOLARSSL_MD_C #definePOLARSSL_MD5_C #definePOLARSSL_NET_C #definePOLARSSL_OID_C #definePOLARSSL_PEM_PARSE_C #definePOLARSSL_PK_C #definePOLARSSL_PK_PARSE_C #definePOLARSSL_PLATFORM_C #definePOLARSSL_RSA_C #definePOLARSSL_SHA1_C #definePOLARSSL_SHA256_C #definePOLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO #definePOLARSSL_SSL_CACHE_C #definePOLARSSL_SSL_CLI_C #definePOLARSSL_SSL_SRV_C #definePOLARSSL_SSL_TLS_C #definePOLARSSL_TIMING_C #definePOLARSSL_VERSION_C #definePOLARSSL_X509_USE_C #definePOLARSSL_X509_CRT_PARSE_C #definePOLARSSL_X509_CRL_PARSE_C #definePOLARSSL_X509_CSR_PARSE_C #definePOLARSSL_XTEA_C /*For testing with compat.sh */ #include"polarssl/check_config.h" #endif/* POLARSSL_CONFIG_H */
编译命令:
#makeCC=arm-linux-gcc SHARE=1
编译前保证交叉编译工具安装,如果SHARED=1省略,会只编译静态库。
最后的体积为196kB。
2.编译curl
下载地址curl.haxx.se
我使用的版本为curl-7.41.0
需要根据自己的需求进行配置
./configure--host=arm-linux --without-ssl --with-polarssl --enable-optimize--disable-debug --disable-curldebug --disable-symbol-hiding--disable-dict
--disable-gopher --disable-imap --disable-pop3--disable-rtsp --disable-smtp --disable-telnet --disable-sspi--disable-smb --disable-ntlm-wb --disable-tls-srp--disable-soname-bump --disable-manual --disable-file --disable-ldap--disable-tftp --enable-http --disable-ftp
如果最后出现下面的信息,就说明配置正确了
configure:Configured to build curl/libcurl:
curlversion: 7.41.0
Hostsetup: arm-unknown-linux-gnu
Installprefix: /usr/local
Compiler: arm-linux-gcc
SSLsupport: enabled (PolarSSL)
SSHsupport: no (--with-libssh2)
zlibsupport: enabled
GSS-APIsupport: no (--with-gssapi)
TLS-SRPsupport: no (--enable-tls-srp)
resolver: default (--enable-ares / --enable-threaded-resolver)
IPv6support: no (--enable-ipv6)
Unixsockets support: enabled
IDNsupport: no (--with-{libidn,winidn})
Buildlibcurl: Shared=yes, Static=yes
Built-inmanual: no (--enable-manual)
--libcurloption: enabled (--disable-libcurl-option)
Verboseerrors: enabled (--disable-verbose)
SSPIsupport: no (--enable-sspi)
cacert bundle: no
cacert path: no
LDAPsupport: no (--enable-ldap / --with-ldap-lib /--with-lber-lib)
LDAPSsupport: no (--enable-ldaps)
RTSPsupport: no (--enable-rtsp)
RTMPsupport: no (--with-librtmp)
metalinksupport: no (--with-libmetalink)
HTTP2support: disabled (--with-nghttp2)
Protocols: HTTP HTTPS
在刚开始编译的时候,SSLsupoort看不到PolarSSL显示,就是说系统没有找到polarssl这个库。我把编译完成的libpolarssl和libpolarssl.so.7打包,放到交叉编译工具的arm-unknown-linux-gun/lib目录下,就可以找到了。把polarssl的头文件直接和curl的头文件方一起。
然后执行make就可以得到libcurl的库了,在curl-7.41.0/lib/.libs里面,动态库有3个libcurl,libcurl.so.4和libcurl.so.4.3.0。
在curl-7.41.0/src/.lib下面有一个curl命令行工具,可以测试最后编译完成的库是否可以工作。
把polarssl和curl的动态库放到arm文件系统的/lib或者/usr/lib库里,curl工具放到用户目录
#./curl-V
curl7.41.0 (arm-unknown-linux-gnu) libcurl/7.41.0 PolarSSL/1.3.8zlib/1.2.3
Protocols:http https
Features:Largefile SSL libz UnixSockets
说明库可以正确运行了。
打开网站看看。
#./curl https://www.baidu.com curl:(51) Cert verify failed: BADCERT_NOT_TRUSTED
上面的信息表示没有安装证书。我们从台式机的linux系统里直接找些证书放到curl目录,CentOS在/etc/pki/tls/certs/ca-bundle.crt,一些常用网站的证书在这里。
#./curl-k –cert ca-bundle.crthttps://www.baidu.com
会显示一些网页信息,说明可以正确运行了。
相关文章推荐
- 编码方式
- C语言(回调函数与转移表)
- 动画集合
- 关于layoutSubviews方法何时使用的总结
- Android Studio 使用笔记:Git 的配置和第一次提交到仓库
- 数字处理
- 【C/C++】快速排序的两种实现思路
- 如何学好算法
- codeforces 558 E A Simple Task
- 值得收藏!神级代码编辑器 Sublime Text 全程指南
- iOS导航BarButtonItem文字或者图片与屏幕边界的间隔调整方法
- JavaScript基本包装类型
- Spring @Async
- H - Cow Contest
- spring 3.2+mybatis 整合报错问题
- POJ 1459 Power Network【多源汇点最大流】
- LTprof
- 巨型文件去重行
- formValidator向struts2 ajax传参验证
- 算法策略的总结