无法使用libcurl(交叉编译为arm)应用程序发送电子邮件

时间:2012-07-18 12:10:52

标签: linux arm libcurl

我正在使用libcurl运行am-1808运行linux [我需要使用我的c程序发送电子邮件],我已成功编译libcurl for arm并成功编译sample application ,但是当我在arm-board上运行这个应用程序时,我得到了以下输出。

* About to connect() to smtp.gmail.com port 587 (#0)
*   Trying 74.125.127.108... * 0x12008 is at send pipe head!
* Connected to smtp.gmail.com (74.125.127.108) port 587 (#0)
< 220 mx.google.com ESMTP pf8sm6421301pbc.44
> EHLO am180x-evm
< 250-mx.google.com at your service, [115.186.161.64]
< 250-SIZE 35882577
< 250-8BITMIME
< 250-STARTTLS
< 250 ENHANCEDSTATUSCODES
> STARTTLS
< 220 2.0.0 Ready to start TLS
> QUIT

然后它仍然停留在那里,我电脑上同一程序的输出是,

* About to connect() to smtp.gmail.com port 587 (#0)
*   Trying 74.125.127.108...
* Connected to smtp.gmail.com (74.125.127.108) port 587 (#0)
* Connected to smtp.gmail.com (74.125.127.108) port 587 (#0)
< 220 mx.google.com ESMTP ns5sm15912240pbb.26
> EHLO ubuntu
< 250-mx.google.com at your service, [115.186.161.64]
< 250-SIZE 35882577
< 250-8BITMIME
< 250-STARTTLS
< 250 ENHANCEDSTATUSCODES
> STARTTLS
< 220 2.0.0 Ready to start TLS
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* SSL connection using ECDHE-RSA-RC4-SHA
* Server certificate:
*    subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=smtp.gmail.com
*    start date: 2011-11-18 01:57:17 GMT
*    expire date: 2012-11-18 02:07:17 GMT
*    issuer: C=US; O=Google Inc; CN=Google Internet Authority
*    SSL certificate verify ok.
> EHLO ubuntu
< 250-mx.google.com at your service, [115.186.161.64]
< 250-SIZE 35882577
< 250-8BITMIME
< 250-AUTH LOGIN PLAIN XOAUTH
< 250 ENHANCEDSTATUSCODES
> AUTH LOGIN dXNhbWF5YXNlZW45MEBnbWFpbC5jb20=
< 334 UGFzc3dvcmQ6
> dXNhenJwMjY=
< 235 2.7.0 Accepted
> MAIL FROM:<my_email@gmail.com>
< 250 2.1.0 OK ns5sm15912240pbb.26
> RCPT TO:<my_email@yahoo.com>
< 250 2.1.5 OK ns5sm15912240pbb.26
> DATA
< 354  Go ahead ns5sm15912240pbb.26
< 250 2.0.0 OK 1342605604 ns5sm15912240pbb.26
* Connection #0 to host smtp.gmail.com left intact
> QUIT
< 221 2.0.0 closing connection ns5sm15912240pbb.26
* Closing connection #0

证书存在一些问题,我在配置lib-curl时尝试设置ca-bundle,但它没有帮助。这是我配置libcurl的命令。

./configure --host=arm-none-linux-gnueabi --build=i686-linux CFLAGS='-Os' --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt --with-ssl=/usr/bin/openssl --enable-smtp

我知道如何解决这个问题吗?

问候

乌萨马

1 个答案:

答案 0 :(得分:1)

lib-curl需要openssl来启用https,ssl等,现在我已经在我的系统上安装了openssl,但是这是为x64处理器编译的,所以我交叉编译了open-ssl for arm以及之后我再次交叉编译lib-curl for arm,现在sample applicatio n工作正常并发送电子邮件。

open-ssl的configure参数是:

./config os/compiler:arm-none-linux-gnueabi-gcc

lib-curl的configure参数是:

./configure --host=arm-none-linux-gnueabi --build=i686-linux CFLAGS='-Os' --enable-smtp --with-ssl 

如果您仍然收到证书错误,请将其添加到配置参数中。

--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt

P.S:在手臂上运行应用程序之前,不要忘记将电脑中的include和lib文件复制到手臂。