如何制作标准及简单Makefile

Autotools工具

制作标准Makefile需要用到Autotools工具

如何制作标准及简单Makefile_第1张图片

详细制作图示可以参考GNU中的autoconf手册(该过程就需要用到上面的5个工具):

如何制作标准及简单Makefile_第2张图片

制作过程

结合上图使用相关指令演示制作过程,如果有相关指令找不到

sudo apt install xx
  1. 编写好源文件(test.c)

     autoscan
    
  2. 将configure.scan改为configure.ac

     mv configure.scan configure.ac
    
  3. 修改configure.ac

     vim configure.ac
     AC_INIT(test, 1.0, [email protected])
    

    如果没有头文件,不使用autoheader,则可以将

     #AC_CONFIG_HEADERS([config.h])
    

    增加下面一个宏,表示最后需要使用automake工具

     AM_INIT_AUTOMAKE(test, 1.0)
    

    输出文件Makefile

     AC_OUTPUT(Makefile)
    
  4. 如果使用了configure.ac中使用了宏,那么需要aclocal,否则不需要,执行aclocal生成aclocal.m4。

     aclocal
    
  5. 执行autoconf生成configure

     autoconf
    
  6. 编写Makefile.am,参考automake手册:

     vim Makefile.am
     //增加如下两条语句
     bin_PROGRAMS = test
     test_SOURCES = test.c
    

    如何制作标准及简单Makefile_第3张图片

  7. 执行automake

     automake
    

    如果报错

     touch NEWS README AUTHORS ChangeLog
     automake --add-missing
    
  8. 执行configure,生成Makefile

     ./configure
    
  9. make

     //编译
     make
     //默认安装路径/usr/local/bin
     make install
     //生成压缩包,商业发布
     make dist
    

简单版Makefile

  • 例子:

      #Design by wolfnx
    
      TARGET  := lost
      Q       := @
      SRC_EXTENSION_NAME      :=.c
    
      #COBJS  += lost.o
      #COBJS  += swap.o
    
      COBJS   := $(patsubst %$(SRC_EXTENSION_NAME), %.o, $(wildcard *$(SRC_EXTENSION_NAME)))
    
      LDFLAGS :=
      CFLAGS  :=
    
      CROSS_COMPILE   :=
      CC      := $(CROSS_COMPILE)gcc
      LD      := $(CROSS_COMPILE)ld
    
      $(TARGET):$(COBJS)
      $(Q)$(CC) $(CFLAGS) -o $@ $^
    
      %.o:%$(SRC_EXTENSION_NAME)
      $(Q)$(CC) $(CFLAGS) -c -o $@ $^
    
      clean:
      	$(Q)rm -f $(TARGET) $(BUILD) *.o
    

个人博客:http://www.wolfnx.com/2018/05/19/MakefileGenerate

邮箱 : [email protected]
邮箱2 : [email protected]

你可能感兴趣的:(C,kernel,uboot)