0

我已经下载了 curl 库源代码,并将其提取到 android 源的外部文件夹中,我使用以下配置命令生成了 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 来构建 curl 模块时,我得到以下错误:

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

有谁知道如何解决这个错误?

提前致谢!

4

1 回答 1

2

您可能会因为一些错误的包含而收到此错误。发生这种情况的最常见原因之一是因为您正在cURL使用主机进行编译,包括.

检查您的Makefile不包含对/usr/include或任何其他包含路径的硬编码引用。当人们尝试在 x86 上为 ARM 进行交叉编译时,这显然是一个常见错误。您的编译器很困惑,因为他试图将汇编网络指令(例如rorw(“rotate word right”)x86 指令解析为ror(“rotate right”)ARM 指令。

一些 C 函数,例如htons提供网络字节顺序转换(例如确保没有字节顺序问题),被实现为包含内联汇编的预处理器宏。并且 ARM 编译器无法理解 x86 指令,这就是您收到此错误的原因。这类网络翻译功能在 中被大量使用cURL,因此这很可能是您的问题。

这是一篇很好的文章,可以帮助您在 Android 上移植 cURL。这家伙没有cURL用 Android 编译,而是通过JNI.

于 2013-03-25T20:22:22.990 回答