如何制作标准及简单Makefile

7 篇文章 0 订阅
2 篇文章 0 订阅

Autotools工具

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

1

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

1

制作过程

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

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, wolfnx@outlook.com)
    

    如果没有头文件,不使用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
    

    1

  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

邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值