MPLAB не может объединить файлы.s и.c
Я использую MPLAB v4.0.5 на моем Mac с компилятором XC16 v1.33. У меня есть два файла, thom5409_disc2_main_v001.s и thom5409_disc2_main_v001.c .
Следующий код был предоставлен, чтобы помочь нам начать работу, и другие ученики в моем классе смогли получить точно такой же код для сборки без изменений, поэтому я считаю, что это проблема с моей версией MPLAB или компилятором.
В общем, мой ассемблерный код выглядит так:
Когда я пытаюсь его построить, я получаю следующие ошибки:
multiple definition of '_counter'
а такжеmultiple definition of '_myAsmFunc'
Когда я удаляю строки в файле сборки, которые говорят .global _myAsmFunc
а также.global _counter
Вместо этого я получаю следующие ошибки: undefined reference to '_main'
а такжеundefined reference to '_myGlobalVar'
Я попытался отладить и найти решение для этого, но я не могу понять это. Как упоминалось ранее, другие одноклассники, использующие различные машины и версии как MPLAB, так и компилятора XC, смогли заставить его работать, поэтому я не верю, что это проблема кода, но, возможно, мне придется немного изменить код для MPLAB или компилятор?
1 ответ
Оба файла будут скомпилированы в thom5409_disc2_main_v001.o
, Вам нужно переименовать один из файлов, чтобы файлы.c и.s компилировались в разные объектные файлы.