搜索
bottom↓
回复: 12

帮忙看下这儿Makefile,执行不了

[复制链接]

出0入0汤圆

发表于 2014-7-16 07:37:28 | 显示全部楼层 |阅读模式
Makefile文件内容:

功能:是将IDE开开发环境里的源代码,写个Makefile在linux下,生成可执行文件hex或是bin文件        ,但是老执行不了。。。。求分析~

#变量定义  
CC = gcc
LD = ld
AR = ar
OBJCOPY = objcopy
OBJDUMP = objdump


#编译条件定义

INCLUDEDIR :=  $(shell pwd)/library/inc
CFLAG := -Wall -o
CPPFLAG := -nostdinc -I $(INCLUDEDIR)

export CC LD AR OBJCOPY OBJDUMP

objs := stm32f10x_adc.o stm32f10x_bkp.o stm32f10x_can.o stm32f10x_crc.o stm32f10x_dac.o stm32f10x_dbgmcu.o \
                        stm32f10x_dma.o stm32f10x_exti.o stm32f10x_flash.o stm32f10x_fsmc.o stm32f10x_gpio.o stm32f10x_i2c.o\
                        stm32f10x_iwdg.o stm32f10x_lib.o stm32f10x_nvic.o stm32f10x_pwr.o stm32f10x_rcc.o stm32f10x_rtc.o \
                        stm32f10x_sdio.o stm32f10x_spi.o stm32f10x_systick.o stm32f10x_tim.o stm32f10x_usart.o stm32f10x_wwdg.o \
                        main.o cortexm3_macro.o stm32f10x_vector.o stm32f10x_it.o


#编译

#此处应该为  uart.hex  

#uart.bin: $(objs)

#${LD} -Tlcd.lds -o lcd_elf $^     
#        ${OBJCOPY} -O binary -S lcd_elf $@
#        ${OBJDUMP} -D -m arm lcd_elf > lcd.dis
       
       
%.o:%.S
        ${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
       
%.o:%.c
        ${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

.PHONY: clean
#clean:
#        rm -f *.o uart.bin
#

但是执行后的结果是:
没有规则创建“uart”需要的目标:stm32f10x_adc.o,停止。

怀疑这条语句就没有执行:
%.o:%.S
        ${CC} $(CPPFLAGS) $(CFLAGS) -c -o $@ $<





















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-7-16 08:30:12 | 显示全部楼层
不懂,帮顶

出0入0汤圆

发表于 2014-7-16 09:28:50 | 显示全部楼层
不太懂,不过你可以装个automake试一下。

出0入0汤圆

发表于 2014-7-16 09:59:17 | 显示全部楼层
缺少目标文件吧;我都没有看出来这个Makefile要做什么;你的第一个目标就是%.o:%.S?
我估计是你裁剪的,删多了

出0入0汤圆

发表于 2014-7-16 10:53:50 | 显示全部楼层
本帖最后由 youthdou 于 2014-7-16 10:55 编辑
  1. %.o : %.s
  2.       XX
复制代码

这种用法是有问题。推荐看下陈皓的《跟我一起写Makefile》。

出0入0汤圆

发表于 2014-7-16 11:19:46 | 显示全部楼层
  1. object_c = hello1.o
  2. object_s = hello2.o

  3. all: $(object_s) $(object_c)

  4. $(object_c) : %.o : %.c
  5.         gcc -c -o $@ $<
  6.        
  7. $(object_s) : %.o : %.s
  8.         gcc -c -o $@ $<

  9. .PHONY: clean
  10. clean:
  11.         rm -f *.o
复制代码


试下这个Makefile,看看行不行?

出0入0汤圆

发表于 2014-7-16 12:14:01 | 显示全部楼层
LZ我是这么写的,用了很久了。
  1. CC=arm-none-eabi-gcc
  2. AR=arm-none-eabi-ar

  3. ###########################################

  4. vpath %.c src


  5. CFLAGS = -g -O2 -Wall
  6. CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m3
  7. CFLAGS += -mfloat-abi=soft
  8. CFLAGS += -ffreestanding -nostdlib
  9. CFLAGS += -Iinc -ICMSIS/CM3/CoreSupport
  10. CFLAGS += -ICMSIS/CM3/DeviceSupport/ST/STM32F10x
  11. #CFLAGS += -DNDEBUG
  12. CFLAGS += -DSTM32F10X_MD -D USE_STDPERIPH_DRIVER


  13. SRCS =  misc.c           stm32f10x_cec.c     stm32f10x_dma.c    stm32f10x_gpio.c  stm32f10x_rcc.c   stm32f10x_tim.c \
  14.         stm32f10x_adc.c  stm32f10x_crc.c     stm32f10x_exti.c   stm32f10x_i2c.c   stm32f10x_rtc.c   stm32f10x_usart.c \
  15.         stm32f10x_bkp.c  stm32f10x_dac.c     stm32f10x_flash.c  stm32f10x_iwdg.c  stm32f10x_sdio.c  stm32f10x_wwdg.c \
  16.         stm32f10x_can.c  stm32f10x_dbgmcu.c  stm32f10x_fsmc.c   stm32f10x_pwr.c   stm32f10x_spi.c


  17. OBJS = $(SRCS:.c=.o)

  18. .PHONY: libstm32f103.a

  19. all: libstm32f103.a

  20. %.o : %.c
  21.         $(CC) $(CFLAGS) -c -o $@ $^

  22. libstm32f103.a: $(OBJS)
  23.         $(AR) -r $@ $(OBJS)

  24. clean:
  25.         rm -f $(OBJS) libstm32f103.a
复制代码

出0入0汤圆

发表于 2014-7-16 12:16:52 | 显示全部楼层
写得太复杂了,你可以写个helloworld.c,针对这一个文件,写个makefile,如果能编译通过的话,再使用你现在的工程。

出0入0汤圆

 楼主| 发表于 2014-7-16 13:06:45 | 显示全部楼层
看了下  是因为只设置了头文件路径 没有设置源文件路径,  -nostdinc是不搜索标准头文件库, 用什么标志 使它不搜索标准源文件库?

出0入0汤圆

 楼主| 发表于 2014-7-16 20:36:12 | 显示全部楼层
youthdou 发表于 2014-7-16 11:19
试下这个Makefile,看看行不行?

非常感谢,我下午弄得  可以生成.o了  只是全是生成在主目录下,而不是c文件所在的目录, 对于.S文件是不是对里面的所有伪指令进行修改才能在GNU下运行,要是的话,这个工程量 总感觉很大。。。。

出0入0汤圆

发表于 2014-7-16 21:42:15 | 显示全部楼层
学习来了,新人报道!

出0入0汤圆

发表于 2014-9-28 16:52:16 | 显示全部楼层
zfchen819 发表于 2014-7-16 20:36
非常感谢,我下午弄得  可以生成.o了  只是全是生成在主目录下,而不是c文件所在的目录, 对于.S文件是不 ...

可以用vpath来改变输出文件路径
https://github.com/wangyeee/STM32F4-FreeRTOS/blob/master/Makefile

出0入0汤圆

 楼主| 发表于 2014-9-28 20:53:31 | 显示全部楼层
dawanpi 发表于 2014-9-28 16:52
可以用vpath来改变输出文件路径
https://github.com/wangyeee/STM32F4-FreeRTOS/blob/master/Makefile ...

谢谢回帖,这个后面是用vpath好了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 03:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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