【发布时间】:2014-04-25 09:31:12
【问题描述】:
我的 C++ 代码在我的 Linux x86 机器上运行良好,但在将相同代码移植到运行相同 x86 架构的 Android 后,我收到错误:“asm”中的操作数约束不一致。
在我的android.mk 文件中有两个源文件,一个是.cpp 文件,另一个是.asm 文件。我认为.asm 文件没有被编译,因为如果我从android.mk 中删除它,我仍然会遇到同样的错误。
我收到以下 .cpp 文件的错误:
for(int reg = 0; reg <= max; reg++) {
asm ("cpuid"
: "=a" (eax),
"=b" (ebx),
"=c" (ecx),
"=d" (edx)
: "a" (reg), getting error on this line.
"c" (0));
如果我尝试使用 nasm 单独编译 .asm 文件,它会成功编译,但在 Linux 和 android 中都不能使用 as assembler。
这个问题的解决方法是什么?
【问题讨论】:
-
请告诉我如何在 android 上添加 nasm 汇编程序。我的 .asm 文件是用 nasm 汇编器编译的,但不是用 as 编译的。那么我们应该怎么做才能使用 nasm assembler 编译 .asm 文件。我已经在我的 x86 上安装了 nasm assembler。
-
您使用的是哪个版本的 gcc/c++ 编译器?尝试将其更新到 4.8,如果您的操作系统没有稳定的版本,请尝试一些测试或不稳定的版本,以证明其 gcc ;)(请参阅 edukit.me/installing-gcc48 或 stackoverflow.com/questions/16311600/…)
标签: android c++ linux assembly