avr-gcc - AVR 构建期间未定义的引用,链接器错误
问题描述
我正在尝试在 Atmel Studio (7) 中编译和链接基于 AVR 的程序。我在链接阶段收到错误消息。
我是第一次用这个软件做这个程序,因为我得到了这个软件进行维护。而且听说这个软件之前已经在“某个环境”下成功搭建过。我安装了最新的 Atmel Studio,选择了项目文件,并选择了正确的处理器。链接阶段开始后,出现有关未定义引用的错误消息。
构建目标:16k.elf 调用:AVR/GNU 链接器:5.4.0 "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -o 16k.elf DanskOFP.o adc_drv.o -Wl,-Map="16k.map" -Wl,--start-group -Wl,--end-group -Wl,--gc-sections -mmcu=atmega164p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega164p" C:\Projektit\V2.34\DanskOFP\Atmega164p\Makefile(118 ,1):错误:目标“16k.elf”的配方失败 DanskOFP.o:在函数“CPRX”中:
C:\Projektit\V2.34\DanskOFP\Atmega164p\Makefile(118,1):错误:目标 '16k.elf' 的配方失败 DanskOFP.o:在函数
CPRX': C:\Projektit\V2.34\DanskOFP\DanskOFP.c(1507,1): error: undefined reference to
__eewr_byte_m164p' C:\Projektit\V2.34\DanskOFP\ DanskOFP.c(1507,1):错误:未定义引用__eewr_byte_m164p' C:\Projektit\V2.34\DanskOFP\DanskOFP.c(1507,1): error: undefined reference to
__eewr_byte_m164p' C:\Projektit\V2.34\DanskOFP\DanskOFP.c(1507,1):错误:未定义引用__eewr_byte_m164p' C:\Projektit\V2.34\DanskOFP\DanskOFP.c(1507,1): error: undefined reference to
__eewr_byte_m164p'
我希望应该从某个地方找到关于“__eewr_byte_m164p”的内部定义,但我没有胶水,AVR 版本之间有什么变化,或者定义是否应该提出一些新的做法?
解决方案
我猜这是来自 avr-libc 的函数,即从eeprom_write_byte()
. 确保 avr-libc 在构建/链接路径中。
推荐阅读
- python - 将我的网站上传到网络后,我将如何访问数据库中的数据?
- amazon-web-services - 使用私有 Docker Hub 存储库对 AWS copilot 应用程序进行身份验证
- reactjs - 如何使用 React useState 钩子从复选框列表中获取多个值到状态
- python - 将在 Kivy 框架中编写的项目的最佳项目结构是什么?
- android - 从 Xamarin.Forms 应用程序的图库中选择时,图像未在三星 Galaxy S9 上显示为背景图像
- python - 如何为具有多个系列条件的 np.nan 设置值?
- flutter - Flutter 和自定义字体
- c++ - 如何使用 llvm ItaniumDemangle api 从受管理的函数名称中获取函数基名称
- reactjs - 'react-scripts' 不是内部或外部命令、可运行程序或批处理文件。安装引导程序后
- r - 嵌套循环通过具有多个参数的函数并堆叠输出