[C语言] 用Keil-MDK built 工程时C文件被多次编译?

[复制链接]
10384|8
 楼主| 拨云人 发表于 2013-10-31 17:27 | 显示全部楼层 |阅读模式
我用 Keil-MDK 搭建好了一个工程,在Built的时候发现很多C文件被多次的编译,虽然最终没有产生错误,但是感觉应该是我代码或者软件设置的问题。请高手指教!
  1. Build target 'nrf51822_xxaa (256K)'
  2. Clean started - Project: 'spi_master_example'
  3.    deleting intermediate output files for target 'nrf51822_xxaa (256K)'
  4. assembling arm_startup_nrf51.s...
  5. compiling system_nrf51.c...
  6. compiling FAT.c...
  7. SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  8. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  9. compiling SDcard_driver.c...
  10. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  11. compiling main.c...
  12. .\SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  13. .\SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  14. compiling nrf51_spi.c...
  15. compiling simple_uart.c...
  16. compiling nrf_delay.c...
  17. linking...
  18. Program Size: Code=4692 RO-data=208 RW-data=1728 ZI-data=3232  
  19. ".\_build\spi_master_example_arm.axf" - 0 Errors, 5 Warning(s).

  20. *** Performing Cross-Module-Optimization:
  21. compiling system_nrf51.c...
  22. compiling FAT.c...
  23. SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  24. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  25. compiling SDcard_driver.c...
  26. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  27. compiling main.c...
  28. .\SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  29. .\SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  30. compiling nrf51_spi.c...
  31. compiling simple_uart.c...
  32. compiling nrf_delay.c...
  33. linking...
  34. Program Size: Code=4296 RO-data=208 RW-data=1728 ZI-data=3232  
  35. compiling system_nrf51.c...
  36. compiling FAT.c...
  37. SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  38. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  39. compiling SDcard_driver.c...
  40. SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  41. compiling main.c...
  42. .\SDcard_driver\SDcard_driver.h(425): warning:  #1-D: last line of file ends without a newline
  43. .\SDcard_driver\FAT.h(154): warning:  #1-D: last line of file ends without a newline
  44. compiling nrf51_spi.c...
  45. compiling simple_uart.c...
  46. compiling nrf_delay.c...
  47. linking...
  48. Program Size: Code=4296 RO-data=208 RW-data=1728 ZI-data=3232  
  49. FromELF: creating hex file...
  50. ".\_build\spi_master_example_arm.axf" - 0 Errors, 5 Warning(s).
  51. *** Completed Cross-Module-Optimization after 3 iteration(s).
 楼主| 拨云人 发表于 2013-10-31 17:31 | 显示全部楼层
这是我清空 Build output 窗口之后,点击Build 按钮后,产生的提示信息。可以看到很多C文件是被多次的编译了的。有没有什么方法可以解决这个问题,还请大家不吝赐教!
ayb_ice 发表于 2013-11-1 08:15 | 显示全部楼层
是在优化,所以需要重新编译,不是多次编译
 楼主| 拨云人 发表于 2013-11-5 20:26 | 显示全部楼层
这个优化是有必要的吗?我已经把优化等级设为了0 ,怎么每次还要重编译2遍?
ayb_ice 发表于 2013-11-6 08:14 | 显示全部楼层
优化级别等于0不等于完全没有优化
xh2008email 发表于 2013-12-8 20:10 | 显示全部楼层
ayb_ice 发表于 2013-11-6 08:14
优化级别等于0不等于完全没有优化

那能不能不要它优化,只让编译器编译一次?是设置还是在程序中编程?
ayb_ice 发表于 2013-12-9 08:16 | 显示全部楼层
xh2008email 发表于 2013-12-8 20:10
那能不能不要它优化,只让编译器编译一次?是设置还是在程序中编程?

也许不可能吧

编译必须完整,这个完全取决于编译器
chenbb8 发表于 2013-12-9 09:41 | 显示全部楼层
LZ取消target的code generation下的use cross-module optimization试下~
雪狐杨 发表于 2017-4-12 14:55 | 显示全部楼层
同意楼上,取消target的code generation下的use cross-module optimization后不会再多次编译
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部