OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 18432|回复: 10

菜鸟求助!Makefile出现未定义的引用

[复制链接]

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
发表于 2021-4-19 22:14:50 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 cao651474007 于 2021-4-20 16:47 编辑

问题描述 :
做LED裸机实验,所有源文件、头文件、链接脚本及makefile都在一个文件夹下。写了main.c ,led.c ,ccm.c .delay.c  四个c文件.其中main.c里引用了剩余三个c文件的函数,头文件都有引用。makefile是按照自己思路写的,编译时出现未定义的引用,同志们看到的给指点下。问题如图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/企业微信截图_16188416328073.png

下面附上makefile
  1.   1 obj = start.o main.o led.o ccm.o delay.o
  2.   2
  3.   3 led.bin : $(obj)
  4.   4     arm-linux-gnueabihf-ld -Timx6ul.lds -o led.elf [        DISCUZ_CODE_7        ]lt;;
  5.   5     arm-linux-gnueabihf-objcopy -O binary -S -g led.elf $@
  6.   6     arm-linux-gnueabihf-objdump -D led.elf > led.dis
  7.   7
  8.   8 main.o : main.c led.h ccm.h delay.h
  9.   9     arm-linux-gnueabihf-gcc -g -c main.c -o main.o
  10. 10
  11. 11 led.o : led.c
  12. 12     arm-linux-gnueabihf-gcc -g -c led.c  -o led.o
  13. 13
  14. 14 ccm.o : ccm.c
  15. 15     arm-linux-gnueabihf-gcc -g -c ccm.c -o ccm.o
  16. 16
  17. 17 delay.o : delay.c
  18. 18     arm-linux-gnueabihf-gcc -g -c delay.c -o delay.o
  19. 19     
  20. 20 %.o : %.S
  21. 21     arm-linux-gnueabihf-gcc -g -c -Wall -nostdlib [        DISCUZ_CODE_7        ]lt;-o $@
  22. 22     
  23. 23 %.o : %.s
  24. 24     arm-linux-gnueabihf-gcc -g -c -Wall -nostdlib [        DISCUZ_CODE_7        ]lt; -o $@
  25. 25     
  26. 26 .PHYON : clean
  27. 27
  28. 28 clean:
  29. 29     rm -rf *.o led.bin led.dis led.elf
  30. ~                                                                                       
  31. ~                                                                                       
  32. ~                                                                                       
  33. ~                                                               
复制代码


企业微信截图_16188416328073.png

最佳答案

查看完整内容[请看2#楼]

main.c 代码贴上来
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
813
金钱
813
注册时间
2021-2-26
在线时间
117 小时
发表于 2021-4-19 22:14:51 | 显示全部楼层
回复

使用道具 举报

6

主题

200

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
1063
金钱
1063
注册时间
2019-9-19
在线时间
194 小时
发表于 2021-4-20 12:57:13 | 显示全部楼层
这没找到头文件,可以参考资料提供的来测试
回复

使用道具 举报

5

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
813
金钱
813
注册时间
2021-2-26
在线时间
117 小时
发表于 2021-4-20 13:17:49 | 显示全部楼层
obj = start.o main.o led.o ccm.o delay.o
====>
obj = start.o led.o ccm.o delay.o main.o


Makefile里的编译顺序

回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
 楼主| 发表于 2021-4-20 13:18:56 | 显示全部楼层
flyzeng 发表于 2021-4-20 12:57
这没找到头文件,可以参考资料提供的来测试

都按照例程来敲一遍,最终自己用的时候出问题,还是解决不了啊
回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
 楼主| 发表于 2021-4-20 13:22:04 | 显示全部楼层
jckimi 发表于 2021-4-20 13:17
obj = start.o main.o led.o ccm.o delay.o
====>
obj = start.o led.o ccm.o delay.o main.o

我也试过把main.o放在依赖的最后一个,没有用,还是同样的问题
回复

使用道具 举报

5

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
813
金钱
813
注册时间
2021-2-26
在线时间
117 小时
发表于 2021-4-20 13:23:52 | 显示全部楼层
cao651474007 发表于 2021-4-20 13:22
我也试过把main.o放在依赖的最后一个,没有用,还是同样的问题

放到最后还是同样的错误吗?其他的.o有没有编译出来了?
回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
 楼主| 发表于 2021-4-20 16:49:12 | 显示全部楼层
本帖最后由 cao651474007 于 2021-4-20 17:15 编辑
jckimi 发表于 2021-4-20 13:23
放到最后还是同样的错误吗?其他的.o有没有编译出来了?

编译出来了
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2021-4-20 20:40:59 | 显示全部楼层
make命令之后第二行编译指令没有加-c参数是导致编译出错的关键。  但你的Makefile第9行贴出来又有-c,,,,奇怪。所以还是确认一下你贴出来的代码到底哪来的吧。。。另外DISCUZ_CODE_7是什么东西?
回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
 楼主| 发表于 2021-4-20 22:04:39 | 显示全部楼层
jckimi 发表于 2021-4-20 18:56
main.c 代码贴上来

做了各种尝试,莫名其妙的好了。具体原因不是特别确定,可能是因为window环境编写的,通过ftp传输到ubuntu环境下格式问题
回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-10-20
在线时间
104 小时
 楼主| 发表于 2021-4-21 10:22:01 | 显示全部楼层
xkwy 发表于 2021-4-20 20:40
make命令之后第二行编译指令没有加-c参数是导致编译出错的关键。  但你的Makefile第9行贴出来又有-c,,, ...

贴出来的是自己写的,那个CODE_7本来是$<  ,贴上来变乱码了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表