在Linux上汇编此代码会给我带来语法错误

时间:2019-03-23 12:09:03

标签: assembly arm

我有一个用于大学目的的树莓派。由于家里没有显示器,所以我决定使用Lubuntu在笔记本电脑中进行汇编代码。

问题是,即使在树莓上进行组装时也可以使用,但是当我从笔记本电脑上运行命令as -g -o $1.o $1.asm && gcc -g -o $1 $1.o时,也会从组装程序中收到错误消息。

这是代码

@ test this code
.global main
main:

mov r7,#1
svc #0

这是汇编器响应

wsearch.asm: Assembler messages:
wsearch.asm:1: Error: junk at end of line, first unrecognized character is `@'
wsearch.asm:5: Error: expecting operand after ','; got nothing
wsearch.asm:6: Error: no such instruction: `svc '

我不知道自己在做错什么,因为在树莓派上进行这种精确的处理非常完美。

1 个答案:

答案 0 :(得分:1)

如@zch所述,您不能使用当前工具链编译ARM程序集:(可能)配置为将x86程序集作为输入来生成x86目标文件。

要实现您的目标,您必须安装交叉编译工具链。 我认为,最简单的方法是安装build-essentialgcc-arm-linux-gnueabihf

$ sudo apt install build-essential gcc-arm-linux-gnueabihf 

在安装之后,您应该有一个新的工具链,前缀为arm-linux-gnueabihf-。就您而言,您将使用arm-linux-gnueabihf-as -g -o $1.o $1.asm && arm-linux-gnueabihf-gcc -g -o $1 $1.o

有很多方法可以做到这一点,但是我发现以下参考文献是相关的: