MPLAB не может объединить файлы .s и .c

Я использую MPLAB v4.0.5 на своем Mac с компилятором XC16 v1.33. У меня есть два файла: thom5409_disc2_main_v001.s и thom5409_disc2_main_v001.c.

Следующий код был предоставлен, чтобы помочь нам начать работу, и другие студенты в моем классе смогли получить точно такой же код для сборки без изменений, поэтому я считаю, что это проблема с моей версией MPLAB или компилятором.

В общем, мой ассемблерный код выглядит так: Код сборки

И мой код на C выглядит так: введите здесь описание изображения

Когда я пытаюсь построить его, я получаю следующие ошибки:

multiple definition of '_counter' и multiple definition of '_myAsmFunc'

Когда я удаляю строки в файле сборки, которые говорят .global _myAsmFunc и .global _counter

Вместо этого я получаю следующие ошибки: undefined reference to '_main' и undefined reference to '_myGlobalVar'

Я пытался отладить и найти решение для этого, но я не могу понять это. Как упоминалось ранее, другие одноклассники, использующие различные машины и версии как MPLAB, так и компилятора XC, смогли заставить его работать, поэтому я не думаю, что это проблема кода, но, возможно, мне придется немного изменить код для MPLAB или компилятор?


person Trevor Thomas    schedule 03.02.2018    source источник
comment
Пожалуйста, отправьте код в виде текста. Мой компилятор не имеет возможности OCR, и я не могу копировать/вставлять в текстовый редактор   -  person Weather Vane    schedule 04.02.2018


Ответы (1)


Оба файла будут скомпилированы в thom5409_disc2_main_v001.o. Что вам нужно сделать, так это переименовать один из файлов, чтобы файлы .c и .s скомпилировались в разные объектные файлы.

person C_Elegans    schedule 03.02.2018