Сборка этого кода в Linux дает мне синтаксические ошибки - PullRequest
1 голос
/ 23 марта 2019

У меня есть малиновый пи, который я использую в университетских целях. Поскольку дома у меня нет монитора, я решил написать код на своем ноутбуке, используя Lubuntu.

Проблема в том, что даже если это работает, когда я собираю его на Raspberry, когда я запускаю команду 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 Ответ

1 голос
/ 23 марта 2019

Как уже упоминалось @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

Есть много способов сделать это, но я нашел следующие ссылки, чтобы быть актуальными:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...