eclipse编译C工程出现超多undefined 的错误解决办法

问题描述

IDE是第三方公司根据eclipse魔改的,但是内核还是eclipse。运行官方给的例程编译链接下载都正常。但是自己根据此工程新建了一些文件夹并加入了.c .h文件,再次编译的时候出现大面积的错误,提示函数没有被定义。觉得很奇怪,因为这些函数都是被定义且实现的,直接点击也可以跳转过去。部分错误如下:


14:05:56 **** Incremental Build of configuration obj for project CentPeri ****
make -j8 all 
Memory region         Used Size  Region Size  %age Used
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/my_uart.o: in function `DebugInit':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/my_uart.c:26: undefined reference to `shellInit'
           FLASH:      134804 B       448 KB     29.38%
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/my_uart.o: in function `UART1_IRQHandler':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/my_uart.c:100: undefined reference to `shellHandler'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o: in function `usb_cdc_init':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:443: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:443: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:444: undefined reference to `pEP1_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:444: undefined reference to `pEP1_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:445: undefined reference to `pEP2_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:445: undefined reference to `pEP2_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:446: undefined reference to `pEP3_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:446: undefined reference to `pEP3_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:447: undefined reference to `USB_DeviceInit'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o: in function `DevEP3_OUT_Deal':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:453: undefined reference to `pEP3_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:485: undefined reference to `DevEP3_IN_Deal'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:483: undefined reference to `pEP3_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o: in function `DevEP4_OUT_Deal':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:494: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:496: undefined reference to `DevEP4_IN_Deal'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:494: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o: in function `USB_DevTransProcess':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:221: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:221: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:79: undefined reference to `pEP0_RAM_Addr'
             RAM:       14540 B        18 KB     78.88%
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:79: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o:D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:109: more undefined references to `pEP0_RAM_Addr' follow
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: ./APP/usb_cdc.o: in function `USB_DevTransProcess':
D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:140: undefined reference to `pEP2_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:140: undefined reference to `pEP2_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:225: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:297: undefined reference to `pEP0_RAM_Addr'
d:/mounriver/mounriver_studio/toolchain/risc-v embedded gcc/bin/../lib/gcc/riscv-none-embed/8.2.0/../../../../riscv-none-embed/bin/ld.exe: D:\workspace\ch573\EVT\EXAM\BLE\CentPeri\obj/../APP/usb_cdc.c:347: undefined reference to `pEP0_RAM_Addr'
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:56: CentPeri.elf] Error 1

14:05:58 Build Failed. 35 errors, 0 warnings. (took 1s.679ms)

解决思路

对比官方给的demo,结合自己创建的工程,发现了如下区别
在这里插入图片描述
在这里插入图片描述
这个文件是灰色的,还画了条斜线,明显感觉是没有参与工程,后来百度发现确实是这样。所以基本定位是这里的问题。

解决过程

  1. 右键选中该文件,选择properties
    在这里插入图片描述
  2. 把exclude resource from build 的钩点掉 保存
    在这里插入图片描述
  3. 这句话的意思是说从工程构建中排除该文件,所以必须要把钩点掉。
  4. 其他自己添加的文件,好像默认也是排除构建的,需要检查一下然后参与编译

至此 问题解决。

14:14:42 **** Incremental Build of configuration obj for project CentPeri ****
make -j8 all 
Memory region         Used Size  Region Size  %age Used
           FLASH:      138564 B       448 KB     30.20%
             RAM:       14584 B        18 KB     79.12%
   text	   data	    bss	    dec	    hex	filename
 137264	   1300	   9056	 147620	  240a4	CentPeri.elf

14:14:44 Build Finished. 0 errors, 0 warnings. (took 2s.388ms)

补充

自己添加的文件,一定要添加头文件的包含路径。方法如下
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值