链接步骤无法找到符号(XC8编译) [英] Link step can't find symbols (XC8 compiler)

查看:528
本文介绍了链接步骤无法找到符号(XC8编译)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图编译和链接使用XC8编译的C程序。我从C18编译器改变,做了一些细微的变化兼容性的code。随着C18的code编译和链接就好了。随着XC8,编译去罚款,但链接步骤失败,此错误:

错误[500]; 0未定义的符号:
_putch(server.obj)_ENC_Init(server.obj)_ENC_WriteRegister(server.obj)_ENC_ReadRegister(server.obj)

由于编译成功,我想找到原型,ERGO在 .H 文件包含还好。我猜编译器无法找到 .C 文件。

功能 putch 是的的叫我自己的程序,但它被称为在的putchar 我使用该功能。首先是 ENC功能_ 是我自己的函数。

我添加了两个路径到XC8工具包的包含搜索路径:


  • C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\源,编译器在其中的 .C 文件的位置,我相信

  • C:\\ ... \\ lib中,那里有我自己的 .C 文件位于

不过,我仍然得到错误。

我怎样才能解决这个问题呢?

这是完整的日志:

咨询[1233]用人18F4620勘误变通办法:
咨询[1234] *损坏的快速中断影子寄存器
咨询[1234] *在RAM中的位置数据可以异步是否损坏。写的过程中发生复位
警告[1273]; 。无所不知code世代在自由模式下不可用
cgpic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -Og9s -q -E1 -w9 -PMS0:code: 0 @ code = 00H-地址0FFFFh -PMS0:code:0 @ CONST = 00H,地址0FFFFh -PMS0:code:0 @ SMALLCONST = 01000h-010FFhx240 -PMS0:code:0 @ MEDIUMCONST = 01000h-0FFFFh之间-PMS1:数据:8 @ COMRAM = 01H-07FH -PMS1:数据:0 @ ABS1 = 00H-0F7Fh -PMS1:数据:0 @两字= 01H-0F7Fh -PMS1:数据:0 @ RAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -PMS1:数据:400 @ BANK0 = 080H-0FFh的-PMS1:数据:800 @ BANK1 = 0100H-01FFh单元-PMS1:数据:1000 @ BANK2 = 0200H-02FFh -PMS1:数据:2000 @ BANK3 = 0300H-03FFh单元-PMS1:数据:0 @ BANK4 = 0400H-04FFh -PMS1:数据:0 @ BANK5 = 0500H-05FFh -PMS1:数据:0 @ = Bank6的0600h-06FFh -PMS1:数据: 0 @ BANK7 = 0700h-07FFH -PMS1:数据:0 @ BANK8 = 0800H-08FFh -PMS1:数据:0 @ BANK9 = 0900H-09FFh -PMS1:数据:0 @ BANK10 = 0A00h-0AFFh -PMS1:数据:0 @ BANK11 = 0B00h-0BFFh -PMS1:数据:0 @ BANK12 = 0C00H-0CFFh -PMS1:数据:0 @ BANK13 = 0D00H-0DFFH -PMS1:数据:0 @ BANK14 = 0E00h-0EFFh -PMS1:数据:0 @ BANK15 = 0F00H-0F7Fh -PMS1:数据:0 @ SFR = 0F80h-0FFFh过-PMS3:配置:0 @ CONFIG = 0300000h-030000Dh -PMS2:EEDATA:0 @ EEDATA = 0F00000h-0F003FFh -PMS4:idloc:0 @ iDLOC = 0200000h- 0200007h--cfgdata = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ cfgdata \\ 18f4620.cfgdata--cfg preFIX = __ CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1 ,65535,3967,8194,31,1,0,127,0 -fp -AC:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 --funcdat = C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5 --addrqual =忽略--runtime =初始化--runtime =明确server.p1C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-PLIB-HTC-18f4620.lppC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-STDLIB-HTC-D32-f32.lpp
cgpic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -q -E1 -Dserver.sdb -PMS0:code: 0 @ code = 00H-地址0FFFFh -PMS0:code:0 @ CONST = 00H,地址0FFFFh -PMS0:code:0 @ SMALLCONST = 01000h-010FFhx240 -PMS0:code:0 @ MEDIUMCONST = 01000h-0FFFFh之间-PMS1:数据:8 @ COMRAM = 01H-07FH -PMS1:数据:0 @ ABS1 = 00H-0F7Fh -PMS1:数据:0 @两字= 01H-0F7Fh -PMS1:数据:0 @ RAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -PMS1:数据:400 @ BANK0 = 080H-0FFh的-PMS1:数据:800 @ BANK1 = 0100H-01FFh单元-PMS1:数据:1000 @ BANK2 = 0200H-02FFh -PMS1:数据:2000 @ BANK3 = 0300H-03FFh单元-PMS1:数据:0 @ BANK4 = 0400H-04FFh -PMS1:数据:0 @ BANK5 = 0500H-05FFh -PMS1:数据:0 @ = Bank6的0600h-06FFh -PMS1:数据: 0 @ BANK7 = 0700h-07FFH -PMS1:数据:0 @ BANK8 = 0800H-08FFh -PMS1:数据:0 @ BANK9 = 0900H-09FFh -PMS1:数据:0 @ BANK10 = 0A00h-0AFFh -PMS1:数据:0 @ BANK11 = 0B00h-0BFFh -PMS1:数据:0 @ BANK12 = 0C00H-0CFFh -PMS1:数据:0 @ BANK13 = 0D00H-0DFFH -PMS1:数据:0 @ BANK14 = 0E00h-0EFFh -PMS1:数据:0 @ BANK15 = 0F00H-0F7Fh -PMS1:数据:0 @ SFR = 0F80h-0FFFh过-PMS3:配置:0 @ CONFIG = 0300000h-030000Dh -PMS2:EEDATA:0 @ EEDATA = 0F00000h-0F003FFh -PMS4:idloc:0 @ IDLOC = 0200000h- 0200007h--cfgdata = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ cfgdata \\ 18f4620.cfgdata--cfg preFIX = __ CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1 ,65535,3967,8194,31,1,0,127,0 -AC:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 --funcdat = C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5 --addrqual =忽略--runtime =初始化--runtime =明确server.p1C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-PLIB-HTC-18f4620.lppC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ LIB \\ PIC18-STDLIB-HTC-D32-f32.lpp
aspic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -E1-CC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\中保18.ini-ver = V1.12 -lserver.lst --opt = -n -18F4620 --comdiv = 127 -no_pa -oserver.obj C:\\用户\\卡米尔\\ AppData的\\本地的\\ Temp \\ S234。
aspic18--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt--cmode = HTC -E1-CC:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\中保18.ini-ver = V1.12 --opt = -n -18F4620 --comdiv = 127 -no_pa -oc:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。 OBJ C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.as
HLINK--edf = C:\\ Program Files文件(x86)的\\ Microchip的\\ xc8 \\ V1.12 \\ DAT \\ en_msgs.txt-cs -h + server.sym -z -w9 -Q18F4620 -Mserver.map -E1 - 版本= XC8#PRO ## V1.12 -A code = 00H-地址0FFFFh -ACONST = 00H,地址0FFFFh -ASMALLCONST = 01000h-010FFhx240 -AMEDIUMCONST = 01000h-0FFFFh之间-ACOMRAM = 01H-07FH -AABS1 = 00H-0F7Fh -ABIGRAM = 01H-0F7Fh -ARAM = 080H-0FFh的,0100H-01FFhx14,0F00h-0F7Fh -ABANK0 = 080H-0FFh的-ABANK1 = 0100H-01FFh单元-ABANK2 = 0200H-02FFh -ABANK3 = 0300H-03FFh单元-ABANK4 = 0400H-04FFh -ABANK5 = 0500H-05FFh -ABANK6 = 0600h-06FFh -ABANK7 = 0700h-07FFH -ABANK8 = 0800H-08FFh -ABANK9 = 0900H-09FFh -ABANK10 = 0A00h-0AFFh -ABANK11 = 0B00h-0BFFh -ABANK12 = 0C00H-0CFFh -ABANK13 = 0D00H-0DFFH -ABANK14 = 0E00h-0EFFh -ABANK15 = 0F00H-0F7Fh -ASFR = 0F80h-0FFFh过 - preset_vec = 00H,INT code中,int codeLO,通电时,init,end_init -pramtop = 01000h -psmallconst = SMALLCONST -pmediumconst = MEDIUMCONST -pconst =常数-AFARRAM = 00H-00H -ACONFIG = 0300000h-030000Dh -pconfig = CONFIG -AIDLOC = 0200000h-0200007h -pidloc = IDLOC -AEEDATA = 0F00000h-0F003FFh -peeprom_data = EEDATA - prdata = COMRAM,nvrram = COMRError [500]; 0未定义的符号:
_putch(server.obj)_ENC_Init(server.obj)_ENC_WriteRegister(server.obj)_ENC_ReadRegister(server.obj)
AM,nvbit = COMRAM,RBSS = COMRAM,RBIT = COMRAM -pfarbss = FARRAM,fardata = FARRAM -pintsave_regs =两字,bigbss =两字,bigdata =两字-pbss = RAM -pidata = code,irdata = code,ibigdata = code,ifardata = code C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.obj server.obj
德尔l.obj
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ S234。
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.1
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.2
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.3
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.4
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.5
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.as
德尔C:\\用户\\卡米尔\\应用程序数据\\本地的\\ Temp \\ s234.obj
(908)退出状态= 1


解决方案

后这里看,并咨询Microchp XC8 <一个href=\"http://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en557668&ei=ioWCUZzoBtHi4AO43IGwCQ&usg=AFQjCNGSAznQjjAh2oATAw9P7iO2y5FYow&sig2=Nb0iZdQQfSZcKWzw3C9pNw\"相对=nofollow>用户手册事实证明,至少有一个问题是,您的来源是缺乏 putch()功能。许多程序(如的printf(),例如)在Microchip的图书馆依靠 putch的presence()为他们的操作功能,而这个功能必须由您提供。而在常规电脑这样的功能,预计将打印字符标准输出,微控制器缺乏标准输出,因此 putch()在某种意义上就是靠它来界定你的标准输出是什么。在 putch()函数应该输出一个字符到一些输出,如LCD,串口,闪烁的LED? (莫尔斯code吧?),或信鸽。从手动,350页:


  

的printf()函数是一个格式化输出套路,操作上
  标准输出。它依赖于 putch()函数来确定目标
  的标准输出。在 putch()函数必须写为每个部分
  项目,以及code初始化本使用的任何外围设备
  常规。一个存根 putch 可在的源目录中找到
  编译器。


编写 putch()功能,即使是什么也不做,将解决 _putch 至少有问题正在未定义:看来 _putch (错误的函数的名称)仅仅是AA的名称错位 putch()

I'm trying to compile and link a C program using the XC8 compiler. I changed from the C18 compiler and made some minor compatibility changes to the code. With C18, the code compiled and linked just fine. With XC8, compiling goes fine, but the link step fails with this error:

Error [500] ; 0. undefined symbols:
_putch(server.obj) _ENC_Init(server.obj) _ENC_WriteRegister(server.obj) _ENC_ReadRegister(server.obj)

As the compiling succeeds, I guess there are prototypes found, ergo the .h files are included okay. I guess the compiler can't find the .c files.

The function putch is not called in my own program, but it's called in putchar and I use that function. The functions starting with ENC_ are my own functions.

I added two paths to the "Include search path" of the XC8 toolsuite:

  • C:\Program Files (x86)\Microchip\xc8\v1.12\sources, where the compiler's .c files are located, I believe
  • C:\...\lib, where my own .c files are located.

However, I still get the error.

How can I resolve this problem?

This is the full log:

Advisory[1233] Employing 18F4620 errata work-arounds:
Advisory[1234]  * Corrupted fast interrupt shadow registers
Advisory[1234]  * Data in RAM location can be corrupted if async. reset occurs during write
Warning [1273] ; . Omniscient Code Generation not available in Free mode
cgpic18 "--edf=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\en_msgs.txt" --cmode=htc -Og9s -q -E1 -w9 -PMS0:code:0@CODE=00h-0FFFFh -PMS0:code:0@CONST=00h-0FFFFh -PMS0:code:0@SMALLCONST=01000h-010FFhx240 -PMS0:code:0@MEDIUMCONST=01000h-0FFFFh -PMS1:data:8@COMRAM=01h-07Fh -PMS1:data:0@ABS1=00h-0F7Fh -PMS1:data:0@BIGRAM=01h-0F7Fh -PMS1:data:0@RAM=080h-0FFh,0100h-01FFhx14,0F00h-0F7Fh -PMS1:data:400@BANK0=080h-0FFh -PMS1:data:800@BANK1=0100h-01FFh -PMS1:data:1000@BANK2=0200h-02FFh -PMS1:data:2000@BANK3=0300h-03FFh -PMS1:data:0@BANK4=0400h-04FFh -PMS1:data:0@BANK5=0500h-05FFh -PMS1:data:0@BANK6=0600h-06FFh -PMS1:data:0@BANK7=0700h-07FFh -PMS1:data:0@BANK8=0800h-08FFh -PMS1:data:0@BANK9=0900h-09FFh -PMS1:data:0@BANK10=0A00h-0AFFh -PMS1:data:0@BANK11=0B00h-0BFFh -PMS1:data:0@BANK12=0C00h-0CFFh -PMS1:data:0@BANK13=0D00h-0DFFh -PMS1:data:0@BANK14=0E00h-0EFFh -PMS1:data:0@BANK15=0F00h-0F7Fh -PMS1:data:0@SFR=0F80h-0FFFh -PMS3:config:0@CONFIG=0300000h-030000Dh -PMS2:eedata:0@EEDATA=0F00000h-0F003FFh -PMS4:idloc:0@IDLOC=0200000h-0200007h "--cfgdata=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\cfgdata\18f4620.cfgdata" --cfgprefix=__CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1,65535,3967,8194,31,1,0,127,0 -fp -AC:\Users\Camil\AppData\Local\Temp\s234. --funcdat=C:\Users\Camil\AppData\Local\Temp\s234.5 --addrqual=ignore --runtime=init --runtime=clear server.p1 "C:\Program Files (x86)\Microchip\xc8\v1.12\lib\pic18-plib-htc-18f4620.lpp" "C:\Program Files (x86)\Microchip\xc8\v1.12\lib\pic18-stdlib-htc-d32-f32.lpp"
cgpic18 "--edf=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\en_msgs.txt" --cmode=htc -q -E1 -Dserver.sdb -PMS0:code:0@CODE=00h-0FFFFh -PMS0:code:0@CONST=00h-0FFFFh -PMS0:code:0@SMALLCONST=01000h-010FFhx240 -PMS0:code:0@MEDIUMCONST=01000h-0FFFFh -PMS1:data:8@COMRAM=01h-07Fh -PMS1:data:0@ABS1=00h-0F7Fh -PMS1:data:0@BIGRAM=01h-0F7Fh -PMS1:data:0@RAM=080h-0FFh,0100h-01FFhx14,0F00h-0F7Fh -PMS1:data:400@BANK0=080h-0FFh -PMS1:data:800@BANK1=0100h-01FFh -PMS1:data:1000@BANK2=0200h-02FFh -PMS1:data:2000@BANK3=0300h-03FFh -PMS1:data:0@BANK4=0400h-04FFh -PMS1:data:0@BANK5=0500h-05FFh -PMS1:data:0@BANK6=0600h-06FFh -PMS1:data:0@BANK7=0700h-07FFh -PMS1:data:0@BANK8=0800h-08FFh -PMS1:data:0@BANK9=0900h-09FFh -PMS1:data:0@BANK10=0A00h-0AFFh -PMS1:data:0@BANK11=0B00h-0BFFh -PMS1:data:0@BANK12=0C00h-0CFFh -PMS1:data:0@BANK13=0D00h-0DFFh -PMS1:data:0@BANK14=0E00h-0EFFh -PMS1:data:0@BANK15=0F00h-0F7Fh -PMS1:data:0@SFR=0F80h-0FFFh -PMS3:config:0@CONFIG=0300000h-030000Dh -PMS2:eedata:0@EEDATA=0F00000h-0F003FFh -PMS4:idloc:0@IDLOC=0200000h-0200007h "--cfgdata=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\cfgdata\18f4620.cfgdata" --cfgprefix=__CFG_ -MLFSROK -MIEEE_DBL -MIEEE_FLT -PPIC18F4620,1,65535,3967,8194,31,1,0,127,0 -AC:\Users\Camil\AppData\Local\Temp\s234. --funcdat=C:\Users\Camil\AppData\Local\Temp\s234.5 --addrqual=ignore --runtime=init --runtime=clear server.p1 "C:\Program Files (x86)\Microchip\xc8\v1.12\lib\pic18-plib-htc-18f4620.lpp" "C:\Program Files (x86)\Microchip\xc8\v1.12\lib\pic18-stdlib-htc-d32-f32.lpp"
aspic18 "--edf=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\en_msgs.txt" --cmode=htc -E1 "-CC:\Program Files (x86)\Microchip\xc8\v1.12\dat\picc-18.ini" -ver=V1.12 -lserver.lst --opt= -n -18F4620 --comdiv=127 -no_pa -oserver.obj C:\Users\Camil\AppData\Local\Temp\s234.
aspic18 "--edf=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\en_msgs.txt" --cmode=htc -E1 "-CC:\Program Files (x86)\Microchip\xc8\v1.12\dat\picc-18.ini" -ver=V1.12 --opt= -n -18F4620 --comdiv=127 -no_pa -oC:\Users\Camil\AppData\Local\Temp\s234.obj C:\Users\Camil\AppData\Local\Temp\s234.as
hlink "--edf=C:\Program Files (x86)\Microchip\xc8\v1.12\dat\en_msgs.txt" -cs -h+server.sym -z -w9 -Q18F4620 -Mserver.map -E1 -ver=XC8#PRO##V1.12 -ACODE=00h-0FFFFh -ACONST=00h-0FFFFh -ASMALLCONST=01000h-010FFhx240 -AMEDIUMCONST=01000h-0FFFFh -ACOMRAM=01h-07Fh -AABS1=00h-0F7Fh -ABIGRAM=01h-0F7Fh -ARAM=080h-0FFh,0100h-01FFhx14,0F00h-0F7Fh -ABANK0=080h-0FFh -ABANK1=0100h-01FFh -ABANK2=0200h-02FFh -ABANK3=0300h-03FFh -ABANK4=0400h-04FFh -ABANK5=0500h-05FFh -ABANK6=0600h-06FFh -ABANK7=0700h-07FFh -ABANK8=0800h-08FFh -ABANK9=0900h-09FFh -ABANK10=0A00h-0AFFh -ABANK11=0B00h-0BFFh -ABANK12=0C00h-0CFFh -ABANK13=0D00h-0DFFh -ABANK14=0E00h-0EFFh -ABANK15=0F00h-0F7Fh -ASFR=0F80h-0FFFh -preset_vec=00h,intcode,intcodelo,powerup,init,end_init -pramtop=01000h -psmallconst=SMALLCONST -pmediumconst=MEDIUMCONST -pconst=CONST -AFARRAM=00h-00h -ACONFIG=0300000h-030000Dh -pconfig=CONFIG -AIDLOC=0200000h-0200007h -pidloc=IDLOC -AEEDATA=0F00000h-0F003FFh -peeprom_data=EEDATA -prdata=COMRAM,nvrram=COMRError   [500] ; 0. undefined symbols:
_putch(server.obj) _ENC_Init(server.obj) _ENC_WriteRegister(server.obj) _ENC_ReadRegister(server.obj) 
AM,nvbit=COMRAM,rbss=COMRAM,rbit=COMRAM -pfarbss=FARRAM,fardata=FARRAM -pintsave_regs=BIGRAM,bigbss=BIGRAM,bigdata=BIGRAM -pbss=RAM -pidata=CODE,irdata=CODE,ibigdata=CODE,ifardata=CODE C:\Users\Camil\AppData\Local\Temp\s234.obj server.obj
del l.obj
del C:\Users\Camil\AppData\Local\Temp\s234.
del C:\Users\Camil\AppData\Local\Temp\s234.1
del C:\Users\Camil\AppData\Local\Temp\s234.2
del C:\Users\Camil\AppData\Local\Temp\s234.3
del C:\Users\Camil\AppData\Local\Temp\s234.4
del C:\Users\Camil\AppData\Local\Temp\s234.5
del C:\Users\Camil\AppData\Local\Temp\s234.as
del C:\Users\Camil\AppData\Local\Temp\s234.obj
(908) exit status = 1

解决方案

Looking at a post here, and consulting the Microchp XC8 users manual it turns out that at least one problem is that your source is lacking a putch() function. Many routines (such as printf(), for instance) in the Microchip libraries rely on the presence of the putch() function for their operation, and this function must be supplied by you. Whereas on "regular" computers such a function would be expected to print a character to stdout, microcontrollers lack standard output, and therefore the putch() is relied on to in a sense "define" what your "standard" output is. The putch() function is supposed to output a single character to some output such as LCD, serial, blinking LED? (in Morse code perhaps?), or carrier pigeon. From the manual, page 350:

The printf() function is a formatted output routine, operating on stdout. It relies on the putch() function to determine the destination of stdout. The putch() function must be written as part of each project, as well as code to initialize any peripherals used by this routine. A stub for putch can be found in the sources directory of the compiler.

Writing the putch() function, even one that does nothing, will solve at least the issue of _putch being undefined: it appears that _putch (the name of the function in the error) is just a a name-mangled putch().

这篇关于链接步骤无法找到符号(XC8编译)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆