crtatmega328p.o:(.init9+0x0):对“main”的未定义引用

crtatmega328p.o:(.init9+0x0): undefined reference to "main"

提问人:Rita Carolina 提问时间:8/12/2019 最后编辑:marc_sRita Carolina 更新时间:4/26/2023 访问量:1950

问:

我一直在尝试编译机器人模拟。

我创建了一个名为test.c的空文件,并尝试使用以下命令编译测试:

avr-gcc -mmcu=atmega328p test.c

AVR-GCC 已安装

copt@copt:~$ avr-gcc --version
avr-gcc (GCC) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
Este é um software livre; veja as fontes para as condições de cópia. NÃO HÁ
garantias; nem mesmo de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UMA FINALIDADE
ESPECÍFICA.

并返回此:

/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o:      
(.init9+0x0): reference not defined to "main"
collect2: erro: ld returned 1 exit status

与我一直在尝试制作的主要作品非常相似。我认为,如果解决了这个非常基本的问题,最大的问题就会得到解决。

FLAGS = -mmcu=atmega328p -Wall -gdwarf-2 -O3 -funsigned-char -funsigned-   bitfields -fpack-struct -fshort-enums 

它应该正常编译。

gcc 编译 未定义引用 avr-gcc atmega32

评论

0赞 vlad_tepesch 8/23/2019
请出示test.c
1赞 KamilCuk 10/1/2019
an empty file called test.c- 所以它没有任何功能......main

答:

2赞 Kimchi Robotics 4/6/2020 #1

对我来说,事实证明我已将代码保存为默认的 FILE 类型。我发现在我将其保存为 .c 文件后,它能够编译。

0赞 François Declercq 4/26/2023 #2

新版本的 Eclipse 2023 也发生在我身上。

在 Debian 11 上,我从“市场”安装了插件,但它无法正常工作。 我不得不去 sourceforge 获取插件的最新版本 (2.4.2) 并手动将其安装在 Eclipse 中。 请注意,通过“新位置”方法进行安装也不起作用。绝对有必要使用“存档”方法安装它

那里的一切似乎都是正确的。

我为 AVR 创建了一个新的 C 项目,创建了一个 src 目录和一个新的源文件,我将其命名为 main.c 然后,我在main.c文件中复制粘贴测试代码,并尝试了“构建项目”

我也收到错误: ...(.init9+0x0):未定义对“main”的引用

在尝试在命令行模式下,在控制台上编译它时,我遇到了相同的编译错误,我意识到main.c文件实际上在硬盘上是空的。 我将main.c文件保存在Eclipse中,一切正常。