0

Linux を実行しているam-1808 にlibcurlを使用しています [C プログラムで電子メールを送信する必要があります]。arm 用に libcurl を正常にコンパイルし、サンプル アプリケーションを正常にコンパイルしましたが、このアプリケーションを arm ボードで実行すると、私は次の出力を得ました。

* 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

そして、そこにスタックしたままです。私のPCでの同じプログラムの出力は、

* 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

どうすればこれを修正できますか?

よろしく

うさま

4

1 に答える 1

1

lib-curlには、https、ssl などを有効にするためのopensslが必要です。システムに openssl がインストールされていましたが、x64 プロセッサ用にコンパイルされていたので、arm 用に open-ssl をクロスコンパイルし、その後、lib-curl を再度クロスコンパイルしました。 arm を実行すると、サンプル アプリケーションが正常に動作し、電子メールを送信できるようになりました。

open-ssl の構成パラメーターは次のとおりです。

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

lib-curl の構成パラメーターは次のとおりです。

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

それでも証明書エラーが発生する場合は、これを設定パラメーターに追加してください。

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

PS: アームでアプリケーションを実行する前に、インクルード ファイルと lib ファイルを PC からアームにコピーすることを忘れないでください。

于 2012-07-25T08:40:17.173 に答える