как запустить этот ассемблерный код на nasm? - PullRequest
3 голосов
/ 23 ноября 2011

У меня есть исходный код игры, но я не смог собрать его по nasm, я не мог понять, в чем проблема.

вот файл makefile:

# Makefile for the nibbles game.

all: nibbles_asm nibbles_asm_start

# Rule for compiling C source
.c.o:
    gcc -Os -march=i686 -Wall -g -c $<

# Rule for compiling assembly source
.S.o:
    as -gstabs $^ -o $@



# ASM game
nibbles_asm: main.o nibbles.o helpers.o
    gcc -lcurses $^ -o -V $@

# ASM game
nibbles_asm_start: start.o nibbles.o helpers.o workaround.o
    gcc -lcurses -lc -nostdlib $^ -o $@

clean:
    rm -f *~
    rm -f *.o
    rm -f nibbles nibbles_asm

а вот и ошибка:

as   -o nibbles.o nibbles.s
gcc -lcurses main.o nibbles.o helpers.o -o -V nibbles_asm
gcc: nibbles_asm: No such file or directory
make: *** [nibbles_asm] Error 1

похоже, что при -gstabs $ ^ -o $ @ не собирать файл nibbles_asm! Я также набрал команду самостоятельно в терминале, но это дало мне много ошибок. мой друг запустил этот код на своем компьютере, поэтому у него нет проблем.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Нет зависимости от nibbles.S до nibbles.o. Кроме того, helpers.o и workaround.o не имеют связей с исходным файлом Добавьте эти отношения, и они должны работать.

0 голосов
/ 23 ноября 2011

В вашей команде gcc есть неправильный номер -V в неправильном месте (в качестве аргумента для -o). Удалите это или поместите это в начале.

Ваша вторая ошибка trying to exec 'i686-linux-gnu-gcc--lcurses': No such file означает, что вы пропускаете пробел между gcc и -lcurses где-то.

...