Ошибка: L6218E: Неопределенный основной символ (ссылка на __rtentry2.o)

кто-нибудь может мне помочь ?? моя плата - LPC1768, а датчик - BMP180

Rebuild target 'Target 1'
compiling BMP180.c...
compiling I2C.c...
assembling startup_LPC17xx.s...
compiling system_LPC17xx.c...
compiling GPIO_LPC17xx.c...
compiling PIN_LPC17xx.c...
linking...
.\Objects\asdsa.axf: Error: L6218E: Undefined symbol main (referred from __rtentry2.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 1 error messages.
".\Objects\asdsa.axf" - 1 Error(s), 0 Warning(s).
Target not created.

person Sepehr Aghili    schedule 11.08.2015    source источник


Ответы (6)


Я решил эту проблему, выполнив следующие действия;

  1. Удалите свой старый проект и создайте новый проект
  2. Выберите настоящую библиотеку в разделе «Управление средой выполнения» следующим образом: Управление средой выполнения
  3. Настройте сегмент «Параметры для цели». Определите символ USE_STDPERIPH_DRIVER и определите путь к проекту следующим образом: Параметры Taget
  4. Проверьте свою конфигурацию. Напишите следующий код:

     #include "stm32f10x.h"                  // Device header
    
     int main() {
     }
    
person Purgoufr    schedule 14.04.2016

Я обнаружил, что решение простое, но прежде чем углубляться в решение, имейте в виду, что модуль компиляции C (по крайней мере, C Compiler и Assembler) компилирует каждый чистый исходный файл C после разрешения необходимых директив препроцессора и генерирует перемещаемый объектный файл в результате компиляции.

После того, как модуль компиляции выполнит свою работу, есть еще один модуль, который отвечает за индивидуальное объединение каждого исходного файла, который успешно скомпилирован, в перемещаемую форму одного большого объектного файла для всех. Этот модуль называется Linker, а операция - Linking.

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

После этого мы можем вызывать main () функцию как main () символ.

Я обнаружил, что проблема в том, что исходный файл, содержащий функцию main (), не был скомпилирован. В результате отсутствует перемещаемый объектный файл, содержащий символ, соответствующий функции main (). Следовательно, компилятор жалуется: вы просили меня использовать (ссылаться) на символ, который вы гарантированно найдете (определите) в другом файле, но я не нашел такого символа!

Решение:

Для Kiel IDE - поставить исходный файл в очередь для компиляции; вы должны добавить его в категорию «Исходная группа», щелкнув правой кнопкой мыши, либо добавив новые файлы в группу, либо существующие файлы в группу. В результате получится что-то вроде следующего рисунка:

источник, содержащий функцию * main *, должен быть добавлен в категорию группы источников в Keil IDE

Теперь у нас есть основная функция, которая позже обращается (определяется) к основному символу и обнаруживается компоновщиком, чтобы ссылаться на нее в любых других перемещаемых объектных файлах.

person Ahmed Shaban Helwa    schedule 14.10.2018

Я была такая же проблема. Проблема заключалась в том, что имя функции в .c файле имело другое имя по сравнению с именем в .h файле, и я не знал.

person Mohammad Kholghi    schedule 07.01.2021

просто добавьте свой файл c (например, 'main.c') в исходную группу (например: 'исходную группу 1'), развернув цель, затем щелкните правой кнопкой мыши исходная группа, выберите добавить существующие файлы в группу «ваша исходная группа», затем выберите файл main.c.

person Mohammed N. Abo Aqlain    schedule 05.03.2021

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/14222.html Это должно помочь. Просто создайте фиктивный файл main () или main.c. Linker не может найти его в вашем pjt.

person Timur    schedule 13.08.2015

Для решения только добавьте этот файл C в папку драйвера и переведите его,  введите описание изображения здесь

person Mehdi kianpur    schedule 03.07.2020