0

curlライブラリのソースコードをダウンロードし、Androidソースの外部フォルダーに抽出しました。次のconfigureコマンドを使用してcurl_config.hを生成しました。

./configure --host=arm-linux --disable-tftp --disable-sspi --disable-ipv6 --disable-ldaps --disable-ldap --disable-telnet --disable-pop3 --disable-ftp --without-ssl --disable-imap --disable-smtp --disable-pop3 --disable-rtsp --disable-ares --without-ca-bundle --disable-warnings --disable-manual --without-nss --enable-shared --without-zlib --without-random --without-libidn

しかし、カールモジュールを構築するためにmmを実行すると、次のエラーが発生します。

external/curl/lib/connect.c:579: error: invalid 'asm': invalid operand for code 'w'

誰かがこのエラーを修正する方法を知っていますか?

前もって感謝します!

4

1 に答える 1

2

いくつかの悪いインクルードが原因で、おそらくこのエラーが発生しています。これが発生する最も一般的な理由の1つは、ホストでコンパイルcURLしているためです。

Makefileに/usr/includeまたはその他のインクルードパスへのハードコードされた参照が含まれていないことを確認してください。これは、ARM用のx86でクロスコンパイルしようとしているときによくあるエラーです。rorw(「右回転」)x86命令などのアセンブリネットワーク命令を(「ror右回転」)ARM命令として解析しようとしているため、コンパイラは混乱しています。

ネットワークバイトオーダー変換を提供する(たとえば、エンディアンhtonsの問題がないことを保証する)などの一部のC関数は、インラインアセンブリを含むプリプロセッサマクロとして実装されます。また、ARMコンパイラはx86命令を理解できないため、このエラーが発生します。これらの種類のネットワーク変換関数はで頻繁に使用されるため、これが問題になる可能性が高くなります。cURL

これは、AndroidにcURLを移植するのに役立つはずの良い記事です。男はAndroidでコンパイルしませんcURLが、を介してcURLの関数をエクスポートしJNIます。

于 2013-03-25T20:22:22.990 に答える