我已经下载了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构建curl模块时,我收到以下错误:
external/curl/lib/connect.c:579: error: invalid 'asm': invalid operand for code 'w'
有谁知道如何修复此错误?
提前致谢!
答案 0 :(得分:2)
你可能因为一些不好的包含而得到这个错误。出现这种情况的最常见原因之一是因为您正在使用主机包含编译cURL
。
检查 Makefile 是否包含对 / usr / include 或任何其他包含路径的硬编码引用。当人们试图在x86上为ARM交叉编译时,这显然是一个常见的错误。您的编译器很困惑,因为他试图将rorw
(“旋转字右”)x86指令等汇编网络指令解析为ror
(“向右旋转”)ARM指令。
一些C函数,例如htons
,提供网络字节顺序转换(确保没有 endianness 问题),实现为包含内联汇编的预处理器宏。并且ARM编译器无法理解x86指令,这就是您收到此错误的原因。这些网络翻译功能在cURL
中被大量使用,因此这可能是您的问题。
这是一个good article,可以帮助您在Android上移植cURL。该家伙不会使用Android编译cURL
,而是通过JNI
导出cURL的函数。