我有一个用于大学目的的覆盆子pi。因为在家里我没有显示器,所以我决定使用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 '
我不知道我做错了什么,因为在树莓上做这个完全正确的过程。
正如@zch所提到的,你无法使用当前的工具链编译ARM程序集:它(可能)配置为将x86程序集作为输入,以生成x86目标文件。
要实现您的目标,您必须安装交叉编译工具链。在我看来,最简单的方法是安装build-essential
和gcc-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
有很多方法可以做到这一点,但我发现以下引用是相关的: