Что означает «входной файл компоновщика не используется, потому что компоновка не выполнена»? - PullRequest
0 голосов
/ 20 января 2019

Это странно. Компилятор выдает это предупреждение, хотя все работает как положено.

Это make-файл, который выдает предупреждение:

TARGET = $(notdir $(shell pwd))

LIBS = -lm -lev3dev-c
D_BIN = Build-Assets

ifeq ($(OS),Windows_NT)
LIBS := $(LIBS) -lws2_32
D_BIN := $(D_BIN)/mingw
endif

D_H = ../../source/ev3
CFLAGS = $(addprefix -I, $(D_H)) -O2 -std=gnu99 -W -Wall -Wno-comment

ifeq ($(OS),Windows_NT)
CC = gcc
else
CC = arm-linux-gnueabi-gcc
endif

ifeq ($(OS),Windows_NT)
E_BIN = .exe
else
E_BIN =
endif

F_BIN = $(TARGET)$(E_BIN)

OBJECTS = $(addprefix $(D_BIN)/, $(patsubst %.c, %.o, $(wildcard MotorControl/*.c)))

.PHONY: default all clean

default: $(F_BIN)
all: default

$(OBJECTS): $(D_BIN)/%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

.PRECIOUS: $(F_BIN) $(OBJECTS)

$(F_BIN): $(OBJECTS)
    $(CC) $(OBJECTS) -c -Wall $(LIBS) -o $@

clean:
    -rm -f $(D_BIN)/*.o
    -rm -f $(F_BIN)

Я должен добавить, что я понятия не имею, что я делаю ... Я только начинаю с C, и эти чертовы make-файлы очень перегружены.

1 Ответ

0 голосов
/ 20 января 2019

Опция -c пропускает последнюю ссылку и создает перемещаемый объектный файл:

$(F_BIN): $(OBJECTS)
    $(CC) $(OBJECTS) -c -Wall $(LIBS) -o $@

Именно поэтому входные файлы компоновщика не используются на данном этапе.Вы должны иметь возможность удалить параметр -c, и в результате команда создаст исполняемый файл.

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