Ошибка несовместимости при использовании make для запуска файла c в lubuntu - PullRequest
0 голосов
/ 21 марта 2020

Итак, я начинаю знакомиться с make-файлами.

У меня есть 3 файла: add.s, main. c, numbers. c, где происходит вызов функции сборки из main

, поэтому Я подумал, что мне нужно заявить об этом как о зависимости. Я написал этот make-файл:

output: main.o add.o numbers.o
    gcc main.o add.o numbers.o -o output

main.o: main.c add.s
    gcc -m32 -c main.c

numbers.o: numbers.c
    gcc -m32 -c numbers.c

add.o: add.s
    nasm -f elf32 add.s -o add.o

clean:
    rm -rf *.o output

и запустил его на lubuntu, и я получил эту ошибку:

enter image description here

Любое представление о том, как чтобы исправить это?

1 Ответ

1 голос
/ 21 марта 2020

Очень просто: вам нужно добавить -m32 к строке ссылки, а не только к строкам компиляции.

На самом деле вам просто нужно использовать встроенные средства make для компиляции кода и установки соответствующих переменных. и он с этим справится. Это будет работать:

CC = gcc
CFLAGS = -m32

output: main.o add.o numbers.o
        $(CC) $(CFLAGS) $^ -o $@

add.o: add.s
        nasm -f elf32 $< -o $@

clean:
        rm -rf *.o output

См. https://www.gnu.org/software/make/manual/ для документов.

...