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

问题描述 投票:0回答:2

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

我创建了一个名为 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 compilation undefined-reference avr-gcc atmega32
2个回答
2
投票

对我来说,事实证明我已经将代码保存为默认的FILE类型。保存为.c文件后发现可以编译了


0
投票

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

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

一切似乎都是正确的。

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

我也遇到了错误: ...(.init9+0x0):引用未定义为“main”

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

© www.soinside.com 2019 - 2024. All rights reserved.