Почему я получаю сообщение об ошибке "неопределенная ссылка на". (проблема компоновщика с использованием make) - PullRequest
0 голосов
/ 18 июня 2020

Я знаю, что есть много вопросов, похожих на этот, но, похоже, ни один из них не отвечает на мой вопрос. Я пишу код модульного теста и вызываю следующую функцию

ads1259_init(&settings, &storage);

, которая должна инициировать обмен данными faux spi на x86. Однако я получаю сообщение об ошибке компоновщика undefined, указав ссылку на `ads1259_init '.

Я определил функцию в файле заголовка как

StatusCode ads1259_init(Ads1259Settings* settings, Ads1259Storage* storage);

, а в файле. c как

StatusCode ads1259_init(Ads1259Settings* settings, Ads1259Storage* storage) {...}

Мы используем make для нашей сборки system (о котором я знаю очень мало) и make-файл для библиотеки драйверов, который должен вызываться при запуске команды make test LIBRARY=ms-drivers PLATFORM=x86, которая проверяет все драйверы в этом каталоге:

# Defines $(T)_SRC, $(T)_INC, $(T)_DEPS, and $(T)_CFLAGS for the build makefile.
# Tests can be excluded by defining $(T)_EXCLUDE_TESTS.
# Pre-defined:
# $(T)_SRC_ROOT: $(T)_DIR/src
# $(T)_INC_DIRS: $(T)_DIR/inc{/$(PLATFORM)}
# $(T)_SRC: $(T)_DIR/src{/$(PLATFORM)}/*.{c,s}

$(T)_DEPS := $(PLATFORM_LIB) libcore

ifeq (x86,$(PLATFORM))
$(T)_test_ltc_afe_MOCKS := spi_exchange
endif

I Я запутался, потому что есть около 8 других драйверов, которые используют тот же файл make и настроены с той же файловой структурой, что и мой. Все они отлично проходят проверку, когда я закомментирую эту строку и запускаю команду. Я использую код VS, и все наши сборки выполняются в vagrant, виртуальном ящике linux. Я считаю, что проблема в том, что компоновщик не находит реализацию. c, но я не могу понять, почему. Если у кого-то есть предложения, они были бы очень признательны.

1 Ответ

0 голосов
/ 19 июня 2020

Ответ: Я строил не на той платформе, поэтому компоновщик искал не в том каталоге

...